影院平台搭建 - (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,源代码也在文件中。
类别:影院平台搭建 查看评论
但实际上,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,源代码也在文件中。
类别:影院平台搭建 查看评论
相关文章推荐
- 影院平台搭建 - (8)Flash Media 服务器和依旧的编码问题
- sublime搭建Java编译平台及编码问题
- sublime搭建Java编译平台及编码问题
- sublime搭建Java编译平台及编码问题
- 影院平台搭建 - (1)FLV文件的编码
- JSP页面编码问题
- java平台的编码问题 getByte()所用编码
- 解决utf-8编码页面cookie保存中文时乱码问题
- 缓存静态页面的编码问题
- unity开发相关环境(vs、MonoDevelop)windows平台编码问题
- 页面编码与外部样式表编码不同导致样式不起作用的问题
- PHP中GBK页面调用WebService的编码问题:XML error parsing SOAP payload on line 1
- PHP页面编码问题
- IE不能主动识别UTF-8编码,导致空白页面的问题
- 采用airbnb的airpal和facebook的presto搭建数据平台所遇到的时区,权限问题
- android 平台搭建中遇到的问题
- Suse Linux平台下XML4c解析库支持GB2312编码问题解决过程
- asp.net页面编码问题
- 变态ie6之要求css与页面编码一致引发的问题
- PHP页面编码问题