UTF-8带签名与不带签名
在 Visual Web Developer 另存为文件时,有编码选项,其中有:
- Unicode (UTF-8 with signature) - Codepage 65001
- Unicode (UTF-8 without signature) - Codepage 65001
这两个都是 UTF-8,一个带签名,一个不带签名,有什么区别呢?
带签名也就是带 BOM 信息,不带签名就是不带 BOM。
如果这个网页是用来被别人包含的,如 ASP 中的 include,那么这个网页就不要带签名,否则输出网页时,二进制流中会有两个 BOM 信息(包含页一个,被包含页一个),可能会发生错误。
名称解释
BOM,即 Byte Order Mark,也即字节流标记,它是用来让应用程序识别所用的编码的。UTF-8 的 BOM 是 0xEFBBBF。
如果用文本编辑工具EditPlus打开,带签名的文件会显示编码为utf-8 + ,不带签名的显示 utf- 8
其实UTF-8 的BOM对UFT-8没有作用,是为了支持UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行。
可参考http://blog.math168.com/Web/ShowAllArticle.aspx?id=1012&userid=1000026
http://os.chinaunix.net/a2009/0319/992/000000992584.shtml
二者的区别:当带签名的UTF-8编码内容被浏览器解析时,浏览器直接根据签名即可判断出使用UTF-8编码来进行解析,当不带签名时,浏览器会根据内容的编码来进行判别。简而言之,带签名的将更容易被浏览器以正确的编码方式进行解析。
浙公网安备 33010602011771号