<feff>的问题

在现网代码和配置文件里面,发现中文出现乱码。一查发现这些文件是因为“编码(Encoding)”为ANSI。

所以一时痛快地用 notepad++ 通过 “格式M” 选择 “转为UTF-8编码格式” ,打包更新代码。

然后悲剧了。web server response 的信息,莫名地少了几位。再用vim打开,就发现响应信息头部多了一串字符:<feff>

 

原来,

有些编辑器,比如M$ Windows的记事本,在创建UTF8编码文件时会在头部添加一个不可见字符。这个字符可以通过vim查看到,而且如果是一个php文件,php4、php5在解析时均会有输出。

原来这个被称作BOM(Byte Order Mark)的不可见字符,是Unicode用来标识内部编码的排列方式的,在UTF-16、UTF-32编码里它是必需的,而在UTF-8里是可选的。因 此,才会出现有的编辑器在文件头部添加添加BOM、而有的语法解析器又不作处理的的混乱情况。

根据w3c里FAQ的建议,解决方法就是,删无赦!

**************************

 http://apps.hi.baidu.com/share/detail/35382688

 

 

BOM的UTF文本文件例子,可以用vi 杜撰几个,相关命令如下:

#设置UTF-8编码
:set fileencoding=utf-8
#添加BOM
:set bomb
#删除BOM
:set nobomb
#查询BOM
:set bomb?

如何检测UTF-8编码中的BOM呢?

shell> grep -I -r -l $'\xEF\xBB\xBF' /path

如何删除UTF-8编码中的BOM呢?

shell> grep -I -r -l $'\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//g'

 

在选择用 notepad++ 转 utf-8 时,要选择 “转为UTF-8无BOM编码格式

 

http://7567567.blog.51cto.com/706378/641744

posted @ 2014-04-03 14:12  stallman  阅读(8852)  评论(0编辑  收藏  举报