`
wenhai_zhang
  • 浏览: 190430 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

UTF-8的BOM问题

阅读更多
由于工作原因,最近碰到了java在拷贝文件时,显示时中文乱码,经查证后,确定是jdk的bug.
即在使用UTF-8格式拷贝xml文件时,写入文件留有UTF-8的bom信息。

以下是搜索到的相关信息,以备后用。


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编码了。UTF-8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开头的FFFE了。这是个标识UTF-8编码文件的好办法,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。可是,还是有很多软件不能识别BOM。在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持BOM。PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。由于必须在在Bo-Blog的wiki看到,同样使用PHP的Bo-Blog也一样受到BOM的困扰。其中有提到另一个麻烦:“受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。”这个应该就是Wordpress后台出现空白页面的原因了,因为任何一个被执行的文件包含了BOM,这三个字符都将被送出,导致依赖cookies和session的功能失效。解决的办法嘛,如果只包含英文字符(或者说ASCII编码内的字符),就把文件存成ASCII码方式吧。用UE等编辑器的话,点文件->转换->UTF-8转ASCII,或者在另存为里选择ASCII编码。如果是DOS格式的行尾符,可以用记事本打开,点另存为,选ASCII编码。如果包含中文字符的话,可以用UE的另存为功能,选择“UTF-8 无 BOM”即可。

【百度知道】http://wenwen.soso.com/z/q118420256.htm
分享到:
评论

相关推荐

    Java解决UTF-8的BOM问题

    总之,处理UTF-8 BOM问题的关键在于正确使用能够识别并处理BOM的类,如Java的`UnicodeInputStream`和`UnicodeReader`。通过这些类,开发者可以在读取文件时避免BOM带来的困扰,确保文本数据的准确性和一致性。在编写...

    gb2312,utf-8,utf-8-bom等编码格式的互相转换

    UTF-8-BOM,全称是“UTF-8 Byte Order Mark”,它在UTF-8编码的文件开头添加了一个特殊的字节序列(0xEF, 0xBB, 0xBF)来标识该文件使用的是UTF-8编码。BOM主要用于帮助软件识别文件的编码,但并非所有UTF-8编码的...

    java 读取服务器上的某个文件,并解决UTF-8 BOM文件的问号问题

    这个场景中,我们面临的挑战是如何正确处理UTF-8带有BOM(Byte Order Mark)的文件,因为BOM可能会导致文件内容显示为问号或者其他乱码。下面将详细介绍如何解决这个问题。 首先,我们需要理解什么是UTF-8的BOM。...

    utf-8批量bom添加删除(BomChecker)工具

    2.解决:windows使用utf-8编码,linux使用utf-8无bom编码 3.此小工具主要针对utf-8编码文件,能够批量添加删除BOM,无识别转化ASIIC功能,添加BOM时,如果文件是utf-8(BOM),则跳过,删除亦然 4.当不选中添加...

    批量utf文件转utf8-bom

    "批量utf文件转utf8-bom"这个主题指的是将一批以UTF编码的文件转换为带有BOM(Byte Order Mark)的UTF-8编码。BOM是一个特殊的字节序列,用于标识文件的编码类型,对于UTF-8编码,BOM的字节序列为0xEF, 0xBB, 0xBF。...

    PB字符串转XML文件,解决PB12.5创建UTF-8文件BOM问题(powerbuilder 12.5)

    解决PB创建UTF-8文件带BOM问题; 2.字段串直接生成XML文件。 由于项目需要,需要字符串转为XML文件,直接用Fileopen进行EncodingUTF8编码后,发现文件实际为UTF-8 BOM编码 问度娘发现有相同问题,但解决方式是利用...

    Force-UTF-8-No-BOM-.vsix

    Forcibly saves all files in UTF-8 (No BOM) encoding. ForceUTF8 的核心功能在于其智能识别并转换字符串编码的能力。即使字符串中混杂着多种编码,\ForceUTF8\Encoding::toUTF8() 都能成功将其转换为统一的UTF-8...

    git 修改上传文件编码为utf-8-bom

    当上传文件存在中文时,修改上传文件编码为utf-8-bom

    批量去掉UTF-8文件中BOM标示符

    标题"批量去掉UTF-8文件中BOM标示符"指的是处理这一问题的方法,即通过特定工具或代码删除UTF-8文件开头的BOM标识。这个过程通常是为了确保文件在不同的系统和环境中能够正确无误地被读取和处理。 描述中提到的博文...

    字符编码转换类,支持 ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom互相转换

    "CharsetConv"类提供了一个工具,帮助开发者在ANSI、Unicode(Little Endian和Big Endian)、UTF-8及UTF-8+BOM之间灵活转换,从而避免编码问题带来的困扰。通过深入学习和实践,开发者可以更好地应对各种编码挑战,...

    IDEA支持带BOM的UTF-8编码文件.rar

    理解IDEA对带BOM的UTF-8文件的支持,可以帮助开发者更高效地处理跨平台或跨系统的工作,避免因编码问题导致的不必要困扰。通过灵活地配置IDEA的编码设置,可以确保代码在各种环境中都能正常工作,同时保持良好的...

    UTF-8去BOM头工具

    UTF-8编码是一种广泛使用的字符编码方式,尤其在互联网和软件开发中占据核心地位。它能够表示Unicode字符集中的所有字符,确保了不同语言的文字能在同一文档中和谐共存。然而,UTF-8编码有一个特性,就是对于某些...

    PB9转换utf-8例子

    标签“pb9 utf-8”明确了讨论的是与PowerBuilder 9相关的UTF-8编码问题。UTF-8是一种广泛使用的Unicode字符编码,能够表示Unicode字符集中几乎所有的字符,包括世界各地的多种语言文字。 在压缩包的文件列表中,有...

    CSV乱码解决:CSV转UTF-8 BOM格式转换工具(不用打开csv,速度更快)

    如果你的csv打开时乱码的,那么你需要另存为UTF-8 BOM。但打开csv太慢了,于是有了这个小工具: 这是一款专注于单一功能的桌面应用:将CSV文件快速转换为UTF-8 BOM编码格式。它采用了直观的拖放界面,无需复杂设置,...

    UTF-8文件批量去除BOM标记

    "去除BOM头小工具.exe"是一个实用程序,专门用于批量处理UTF-8编码的文件,移除文件头的BOM标记。这个工具可以极大地提高工作效率,避免手动逐个编辑文件的繁琐过程。在日常开发中,如果你遇到因为BOM导致的问题,...

    C#写入文件加上bom头,主要适用于utf8文件

    在UTF-8编码中,BOM是一个由三个字节组成的序列:0xEF, 0xBB, 0xBF,它位于文件的开头,用来表明该文件采用的是UTF-8编码。在C#编程中,有时我们需要在写入UTF-8文件时添加这个BOM头,以确保其他程序或系统能正确...

    delphi 6-XE读取ANSI,unicode,unicode big,utf-8,utf-8BOM文件,保存utf8

    delphi 6-XE读取ANSI,unicode,unicode big,utf-8,utf-8BOM文件,保存utf8

    添加或删除 xml CSV UTF-8 bom头文件

    添加或删除 xml CSV UTF-8 bom头文件

    VBA Fans读取和写入UTF-8格式文本文件

    UTF-8文件通常以BOM(字节顺序标记)开始,用来标识文件的编码类型。在某些情况下,你可能需要在读取或写入时考虑BOM。在写入时,`ADODB.Stream`会自动添加BOM;在读取时,可以使用`Mid`函数从字节数组的第一个字节...

Global site tag (gtag.js) - Google Analytics