影院平台搭建 - (4)页面编码问题

国内常用的页面编码大都是GBK或者是GB2312,GB13010都很少见。UTF-8格式有,但相对GBK或GB2312就要少一些。
但实际上,Unicode编码才是现在国际上的统一编码方案,GBK、GB2312这些ANSI类编码很容易出现各种问题。例如PHP曾经爆出过的addslash函数对GBK编码的漏洞等等。
但可能很少有人知道Unicode编码也分好几种,UTF16LE,UTF16BE,UTF8,UTF8BOM。
网页中能使用的最常见的就是UTF8。注意这里的UTF8不是Windows中所指的UTF8。WIndows中所指的实际上是UTF8BOM。BOM(byte-order mark)是Windows平台下畸形的产物,Windows系统为了标明一个文件是否是UTF8编码的,在文件头部添加了EF BB BF这三个16进制数。于是问题产生了。在记事本和EmEditor中显示没有任何问题,但如果PHP文件的头部也多出来了这三个东西,PHP引擎会认为这三个东西是可以输出的,于是开始输出内容。正常情况下这里不会带来任何影响,但如果你代码中需要修改header,设置cookie,就会提示HTTP header has been sent之类的错误。
解决方法就是手工去除这三个字符。可以用Notepad++一个个转,也可以用工具批量转换。事实上即使是没有BOM,现在的Windows平台下的文本工具也能很好的识别出来的。
我这里提供一个小工具,是别人写的,我修改了下,支持批量列表删除和遇到错误文件继续这两个功能,同时把默认的UTF8改成了不带BOM的。
下载在这里。需要.Net Framework 2.0,源代码也在文件中。
类别:影院平台搭建 查看评论
posted @ 2009-06-10 17:06  ayanamist  阅读(300)  评论(0编辑  收藏  举报