张云 2009年08月13日 星期四 10:34 | 1783次浏览 | 0条评论
编码(en
呃...这个博客的表格支持...真是ft阿...
编码( encoding )相关的问题那是一言难尽罄竹难书的,这里把我们遇到的问题简单交流一下。
话说有个叫做 BOM ( Byte Order Mark )的东东,放在文件头用来标识整个文件是什么字节顺序的,主要为了标识 utf-16 和 32 这种有大小端问题的编码到底是大端还是小端。但是丫们顺手的就给 utf-8 这种没有字节顺序问题的编码也加了个 BOM 。见下表:
Bytes |
Encoding Form |
00 00 FE FF |
UTF-32, big-endian |
FF FE 00 00 |
UTF-32, little-endian |
FE FF |
UTF-16, big-endian |
FF FE |
UTF-16, little-endian |
EF BB BF |
UTF-8 |
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 ”),下面是我测试过的:
|
|
Notepad , Win 自带的那个 |
支持, 且不能不要 |
Editplus |
可选 ,在配置项里面,中文还把 BOM 译成了“签名” OMG |
Notepad++ |
可选 |
UltraEdit |
支持 , 支持不要 BOM 的,另存为对话框里面会给你这个选择。 |
PSPad |
不支持 … 这个是我主要用的编辑器 |
Vim |
支持 , 读取的话有 BOM 的话按照 BOM 判断,没有的话就是跟 mozilla 差不多了。写入的时候看怎么设置,默认是不写入 BOM 的。 |
Eclipse |
不支持 |
像 Eclipse 和 PSPad 这种不理会 BOM 的编辑器,判断文件编码主要靠猜。
Zeuux © 2024
京ICP备05028076号
暂时没有评论