您的位置:首页 > 其它

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

2009-06-10 17:06 369 查看
国内常用的页面编码大都是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,源代码也在文件中。

类别:影院平台搭建 查看评论
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: