UTF-8 & BOM

这几天遇到这么两个问题

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的东西, 大家各显神通吧~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值