张云

张云的博客

他的个人主页  他的博客

IIS的ASP服务神奇的编码问题&文本编辑器对于编码的处理

张云  2009年08月13日 星期四 10:34 | 1783次浏览 | 0条评论

编码(encoding)相关的问题那是一言难尽罄竹难书的,这里把我们遇到的问题简单交流一下

呃...这个博客的表格支持...真是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哲思注册吗?现在 注册 !

暂时没有评论

Zeuux © 2024

京ICP备05028076号