`

BOM( byte-order mark ,UTF-8 HEADER)问题研究

    博客分类:
  • J2SE
阅读更多

 什么是BOM (byte-order mark ):

   在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF 。所以如果接收者收到以EF BB BF 开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。
     另外unicode网站的FAQ-BOM详细介绍了BOM。
UTF- 8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开 头的FFFE了。这是个标识UTF-8编码文件的好办法,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。可 是,还是有很多软件不能识别BOM。

  Java中如何除去BOM:

 

byte[] b=s.substring(0,2).getBytes(‘UTF-8');
		if(
				(Integer.toHexString(b[0] & 0xFF).equals("ef")) 
				&& (Integer.toHexString(b[1] & 0xFF).equals("bb")) 
				&& (Integer.toHexString(b[2] & 0xFF).equals("bf")) 
		  )
		   s=sb.toString().substring(1, sb.toString().length());

分享到:
评论

相关推荐

    zh-cn-utf8

    BOM(Byte Order Mark)可能会导致在某些情况下出现问题。 2. **HTTP头部**:在PHP脚本中通过`header()`函数设置响应头的`Content-Type`为`text/html; charset=utf-8`,这样浏览器就会知道页面的编码是UTF-8。 3. ...

    Web开发关于UTF-8的问题总结.docx

    - 需要注意的是,如果HTML文件是从其他编码转换为UTF-8的,可能会存在BOM(Byte Order Mark)标记。BOM可能导致浏览器解析中文时出现乱码,可以通过Dreamweaver或EditPlus等工具删除BOM。 2. PHP页面转UTF-8编码...

    php_web项目中utf-8的问题.do

    将文件从其他编码格式转换为UTF-8时,可能会在文件开头自动生成一个BOM(Byte Order Mark)标记。BOM标记可能导致浏览器在显示中文时出现乱码。移除BOM标记的方法包括: - 使用Dreamweaver打开文件并重新保存; -...

    网站开发中遇到UTF8出现乱码问题.docx

    3. BOM问题:BOM(Byte Order Mark)可能导致乱码。使用Dreamweaver或EditPlus等工具去除BOM。 4. Web服务器配置:Apache需在配置文件中设置`charset=utf-8`,Nginx则修改`nginx.conf`中的`charset`为`utf-8`。 二...

    网站开发中遇到UTF8出现乱码问题.pdf

    网站开发过程中,尤其是在进行国际化的过程中,常常会遇到UTF-8编码相关的乱码问题。这些问题主要集中在以下几个方面: 一、HTML页面转UTF-8编码问题 1. 首先,需要在HTML文档的部分,标签之前添加标签来声明编码:...

    完美解决PHP中文乱码

    - 文件编码格式设为UTF-8,注意UTF-8文件可能包含BOM(Byte Order Mark),这在某些情况下(如使用session)会导致问题。可以使用支持去除BOM的编辑器如EditPlus进行文件保存,并选择去除BOM选项。 ##### 2. 字符...

    BOM.rar_BOM_bom.rar_visual c

    在IT行业中,BOM(Byte Order Mark)是一个重要的概念,特别是在处理Unicode文本文件时。BOM是用来标识文本文件字符编码顺序的特殊字符。在标题"BOM.rar_BOM_bom.rar_visual c"中,我们可以推断这是一个与Visual C++...

    php中文乱码解决方案

    - 文件保存为UTF-8格式时,注意去除BOM(Byte Order Mark)。BOM可能会导致使用session时出现问题。推荐使用EditPlus等编辑器保存,并在工具->参数选择->文件->UTF-8签名中选择“总是删除”,以确保去除BOM信息。 ...

    PHP+MySql中文乱码解决办法

    注意,使用某些编辑器(如Notepad++)保存时,默认可能会添加BOM(Byte Order Mark),这可能导致使用session时出现问题。可以使用EditPlus等工具来去除BOM。 ##### 2. PHP与MySQL的数据交互 为了确保PHP与MySQL...

    PHP批量删除、清除UTF-8文件BOM头的代码实例

    在处理文本数据时,尤其是从不同的系统或编辑器导出的文本文件,我们可能会遇到一个问题,那就是文件可能包含UTF-8编码的字节顺序标记(Byte Order Mark,简称BOM)。BOM通常用于UTF-16和UTF-32编码的文件中来标识...

    PHP乱码终极版必杀.

    - **知识点**: BOM(Byte Order Mark)标记是UTF-8编码特有的一个问题,它可能会影响页面的正常显示。 - **解决方法**: - 使用Dreamweaver打开文件并重新保存即可去除BOM。 - 或者使用EditPlus,在菜单“首选项...

    PHP WEB 开发乱码问题总结

    3. **BOM标签问题**:转换编码时可能会在文件开头生成一个不可见的BOM(Byte Order Mark)标记。BOM标记可能导致浏览器解析中文字符时出现问题。可以通过以下几种方式移除BOM标记: - 使用Dreamweaver打开文件并...

    PHP中文乱码问题解决方法

    需要注意的是,使用utf-8编码时,可能会出现BOM(Byte Order Mark)问题,可以使用editplus工具来保存文件,选择“总是删除”BOM信息。 此外,PHP本身不是Unicode的,所以需要使用mb_substr函数代替substr函数,...

    php页面,mysql数据库转utf-8乱码,utf-8编码问题总结

    在构建多语言、国际化的网站时,编码是一个关键问题,特别是从GBK或GB2312等简体中文编码向UTF-8转换时。本文主要总结了PHP页面和MySQL数据库在转换为UTF-8编码时可能遇到的问题及解决方法。 首先,PHP页面的编码...

    php中常见中文乱码处理方法总结

    需要注意的是,当保存为UTF-8时,可能会包含一个BOM(Byte Order Mark)标记,这可能会导致使用session时出现问题。为了避免这种情况,可以使用EditPlus这样的编辑器,在保存时选择“总是删除”UTF-8签名选项。 ###...

    php出现Cannot modify header information问题的解决方法大全

    2. **BOM头**:某些UTF-8编码的文件可能存在Byte Order Mark (BOM),即使文件看起来是空的,BOM也会被当作输出,导致错误。 3. **PHP配置**:PHP配置中的output_buffering设置不当也可能导致此问题。 4. **错误报告*...

    PHP乱码问题,UTF-8乱码常见问题小结

    3. HTML文件BOM问题:有些工具在转换文件编码时,会在文件开头添加BOM(Byte Order Mark)。BOM会导致浏览器解析时出现乱码。可通过Dreamweaver或EditPlus等编辑器去除BOM。 二、WEB服务器UTF-8编码配置 如果按照...

    PHP写入WRITE编码为UTF8的文件的实现代码

    - **添加BOM**:`\xEF\xBB\xBF`是UTF-8编码的BOM(Byte Order Mark),通常出现在UTF-8文件的开头,用来标记文件的编码格式。这里将其添加到字符串的开头。 - **`fputs()`**:将转换后的字符串写入文件。 - **`...

    史上最全的PHP+MySql中文乱码解决方案分享.pdf

    如果选择UTF-8编码,相应地将编码改为UTF-8,并去除文件开头的BOM(Byte Order Mark)以避免PHP session问题。可以使用EditPlus或其他编辑器进行无BOM保存。 2. **PHP与MySQL的数据交互**: - MySQL数据库的默认...

Global site tag (gtag.js) - Google Analytics