这几天遇到这么两个问题
1. 在一台机器上面上出一个UTF-8文件, PHP可以正确处理, 而在另一台机器上面上传一个UTF-8文件, PHP出现乱码.
2. 项目里面有一对xml文件, 不知怎么弄了弄(拿EmEditor或notepad修改过~), 然后传到CSV上,然后又拿diff工具做了修改,最后撇到SunAS8(Java1.4)上面跑. 结果解析这些xml文件报错.
当时不知道原因, 今天才明白,原来是BOM的问题.
下面这个链接:http://initiative.yo2.cn/archives/tag/python-2 讲述了UltraEdit是怎么破坏一个含有BOM的utf8文件:
文中这样写道
UTF-8的BOM是 EFBBBF,因为UE载入UTF-8文件会转成Utf16,上述的EFBBBF 在Utf16中是FFFE(Unicode-LE的BOM),UltraEdit不认识BOM又加多一個BOM,所以有2个FFFE。文件就被它破坏了。
很显然我的问题也是,utf-8格式的文件被破坏了, 虽然我已经回忆不起来破坏是在哪一步骤中引入的.
在Eclipse工程中确认这个问题, 头一次注意到,一个文件如果有BOM, eclipse会在UTF-8下面额外显示一行:
Byte Order Mark is UTF-8
在je上搜一下utf-8, bom, 还有很多utf-8文件被破坏的生动的例子.
jsp文件首行的问号, weblogic的web.xml, D语言Source文件.......
结论就是多平台, 多编辑器搞utf-8文件的时候, 留心一下他们默认是怎么对待bom的.
等多关于BOM以及Utf-8的东西, 大家各显神通吧~~
分享到:
相关推荐
UTF-8-BOM,全称是“UTF-8 Byte Order Mark”,它在UTF-8编码的文件开头添加了一个特殊的字节序列(0xEF, 0xBB, 0xBF)来标识该文件使用的是UTF-8编码。BOM主要用于帮助软件识别文件的编码,但并非所有UTF-8编码的...
然而,UTF-8有一个特殊的形式,即带BOM(Byte Order Mark)的UTF-8,这个BOM在某些情况下可能会引发问题。本文将详细探讨Java中如何处理UTF-8的BOM问题。 首先,我们需要理解什么是BOM。BOM是Unicode编码中的一个...
1.首先介绍一下本人应用场景,qt...3.此小工具主要针对utf-8编码文件,能够批量添加删除BOM,无识别转化ASIIC功能,添加BOM时,如果文件是utf-8(BOM),则跳过,删除亦然 4.当不选中添加删除时可用于文件数量统计。
UTF-8的特殊之处在于它包含一个字节顺序标记(BOM),即UTF-8+BOM,但大多数情况下,UTF-8无BOM更常见。 在PHP中,进行字符编码转换可以使用内置函数,如`mb_convert_encoding()`,这个函数可以将字符串从一种编码...
总的来说,“UTF-8去BOM头工具”是处理UTF-8编码文件时不可或缺的辅助软件,尤其在跨平台或对文件显示有严格要求的场景下,它扮演着至关重要的角色。通过这个工具,用户可以轻松地管理和维护无BOM的UTF-8文件,保证...
然而,UTF-8编码有一种特殊的形式,即带有BOM(Byte Order Mark)的UTF-8,也被称为UTF-8 with BOM。BOM是一个特殊的字符序列,用于标识文件的编码方式,但在某些情况下,BOM可能会引起问题,例如在某些编程语言中...
Forcibly saves all files in UTF-8 (No BOM) encoding. ForceUTF8 的核心功能在于其智能识别并转换字符串编码的能力。即使字符串中混杂着多种编码,\ForceUTF8\Encoding::toUTF8() 都能成功将其转换为统一的UTF-8...
当上传文件存在中文时,修改上传文件编码为utf-8-bom
解决PB创建UTF-8文件带BOM问题; 2.字段串直接生成XML文件。 由于项目需要,需要字符串转为XML文件,直接用Fileopen进行EncodingUTF8编码后,发现文件实际为UTF-8 BOM编码 问度娘发现有相同问题,但解决方式是利用...
"批量utf文件转utf8-bom"这个主题指的是将一批以UTF编码的文件转换为带有BOM(Byte Order Mark)的UTF-8编码。BOM是一个特殊的字节序列,用于标识文件的编码类型,对于UTF-8编码,BOM的字节序列为0xEF, 0xBB, 0xBF。...
这个场景中,我们面临的挑战是如何正确处理UTF-8带有BOM(Byte Order Mark)的文件,因为BOM可能会导致文件内容显示为问号或者其他乱码。下面将详细介绍如何解决这个问题。 首先,我们需要理解什么是UTF-8的BOM。...
虽然UTF-8无BOM是更常见的选择,但IDEA也允许创建带BOM的UTF-8文件。 3. **保存文件**:在保存文件时,可以通过设置选择是否添加BOM。这在与不支持BOM的系统交互时尤其有用。 4. **版本控制**:如果使用Git等版本...
去除bom头小工具,工具使用方法: 选择要遍历的文件夹,输入...勾选ANSI转为UTF-8,则会将相应格式但编码为GB2312,GBK,GB18030的文件转为无BOM的UTF-8文件 请确保文件可写!使用前请做好备份,作者不承担任何法律责任
"BOM"是Byte Order Mark的缩写,UTF-8的BOM头是一个特殊的三位字节序列(0xEF, 0xBB, 0xBF),用于标识文件是以UTF-8编码的。然而,在某些情况下,这个BOM头可能会引起问题,例如在编程或文本处理时,因此我们需要...
标题中的“PB9转换utf-8例子”指的是在PowerBuilder 9(PB9)环境下将数据从非UTF-8编码转换为UTF-8编码的一种解决方案。由于PB9本身不直接支持这种转换,开发者通常需要利用外部库或者特定的编程技巧来实现这个功能...
BOM是UTF-8编码的一个可选特征,它在文件开头放置三个特殊的字节来标识文件的字符编码,但这可能会导致在某些编辑器或浏览器中出现不必要的字符或者乱码问题。因此,开发这个小工具是为了帮助开发者处理这个问题。 ...
"sql,GBK2312,UTF-8,UTF-8 无BOM,脚本字符集转换,脚本格式转换"这个主题核心是关于如何在不同字符编码之间转换SQL脚本,以确保数据的正确性和兼容性。以下是一些相关的知识点: 1. **字符编码**:字符编码是...
在UTF-8编码中,BOM是一个由三个字节组成的序列:0xEF, 0xBB, 0xBF,它位于文件的开头,用来表明该文件采用的是UTF-8编码。在C#编程中,有时我们需要在写入UTF-8文件时添加这个BOM头,以确保其他程序或系统能正确...
"去除BOM头小工具.exe"是一个实用程序,专门用于批量处理UTF-8编码的文件,移除文件头的BOM标记。这个工具可以极大地提高工作效率,避免手动逐个编辑文件的繁琐过程。在日常开发中,如果你遇到因为BOM导致的问题,...