UTF8签名(UTF8-BOM)导致的空白行和版面错位问题

[ 2011-11-25 12:35:58 | 作者: admin ]
字号: | |
p.s. 使用editplus 可以批量修改文件编码,在文档菜单下面,非常好用。平时还是尽量用gbk编码吧,如果是utf-8的话用下dw修改就挂!!

attachments/201111/25_124014_1513530.gif

这就是utf-8的签名导致的问题。
UTF-8签名(UTF-8 signature)也叫做BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记。如果多个文件设置了签名,在二进制流中就会包含多个UTF-8签名,而IE是无法识别多个UTF-8签名的,所以用一个空行来代替,在某些程序处理中还会出现一个类似“锘?”的字符。

W3C官方的说明: http://www.w3.org/International/questions/qa-utf8-bom

解决办法:

用UltraEdit在十六进制模式下,复制另外的"<"去覆盖掉这个头部的"锘?"

并且去掉编辑器里面的BOM签名,以免再次出现。


----------------------
具体每种编辑器的话如下所示。

Editplus设置办法如图:
attachments/201111/25_123859_1513531.gif


UltraEdit设置办法如图:
attachments/201111/25_123907_1513532.gif


Notepad++:
attachments/201111/25_123912_1513533.gif


UTF-8签名也叫做BOM(Byte OrderMark),是UTF编码方案里用于标识编码的标准。但是,UTF-8文件不一定都有BOM,这个签名似乎是可有可无的。

这个看起来与动态网页开发不着边际的BOM实际上会带来很大的麻烦。动态网页开发中经常会遇到一个文件中包含其他文件的情况,比如ASP里面的include、PHP里面的require。

当一个有BOM的文件包含了一个或多个有BOM的文件,那这个文件执行后得到的HTML页面可能会出错。原因是多个BOM导致浏览器解释出错。因此,在ASP或PHP环境下开发时,最好所有文件都不加BOM。

然而,ASP.NET下的情况恰好相反。.NET似乎有处理BOM的过程,无论包含了多少有BOM的文件都没问题。反倒是如果这些文件没有BOM,浏览器显示就会出错。对于utf-8的*.aspx.cs,甚至没有BOM会导致编译出错。
[最后修改由 admin, 于 2011-11-25 12:48:50]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1745

这篇日志没有评论。

此日志不可发表评论。