云's profileC for CloudPhotosBlogListsMore ![]() | Help |
|
March 25 [技术!巨枯燥!] IIS的ASP服务神奇的编码问题,以及文本编辑器们对于BOM的处理编码(encoding)相关的问题那是一言难尽罄竹难书的,这里把遇到的问题简单说一下。 话说有个叫做BOM(Byte Order Mark)的东东,放在文件头用来标识整个文件是什么字节顺序的,主要为了标识utf-16和32这种有大小端问题的编码到底是大端还是小端。但是丫们顺手的就给utf-8这种没有字节顺序问题的编码也加了个BOM。见下表:
ASP Server于是很睿智的觉得,如果你的ASP源文件是什么编码的,那么,你的页面就是什么编码的,它会帮你把页面里面的所有东西,包括直接用Response.Write()吐到页面上的字们,都转成和源文件一个编码格式的。 ASP Server于是就判断每个ASP源文件的BOM,你是“EF BB BF”,那就来utf-8这样。如果没有BOM呢,那就用系统编码,恭喜,在中国你就得到了GBK编码。 糟糕的事情发生在,BOM是不可见的,所以呢,当中国的站长们非常酷的使用了和国际接轨的utf-8编码,而又没有使用一个支持BOM的文本编辑器(或者不知道BOM这回事)的时候,ASP Server会认为你们这些页面都tm是GBK滴。所以…有站长发给我页面代码里面,竟然把每段中文都放在一个函数里面,由那个函数把页面的utf-8字符转成转义过后的GBK(类似于土豆)来输出,否则编码就不正确。 所以,哪些文本编辑器不支持BOM昵(就是说,它在存一个utf-8文件的时候,不会在前面加上“EF BB BF”),下面是我测试过的:
像Eclipse和PSPad这种不理会BOM的编辑器,判断文件编码主要靠猜。
|
|
|