热搜:6KBBS6kbbs V8.0 官方论坛
当前位置: 6kbbs V8.0 官方论坛 » 6KZZ使用问题 » [BOM]PHP程序的UTF8神秘编码问题之解
帖子状态  
本帖子共有 2886 位阅读者, 2 个回复.
  • 回复
3条记录

zym

管理员
帖子
1104 
金钱
8002 
魅力
1083 
威望
1083 
头衔
Founder 
注册
2004-07-12 
zym 发表于 2011-05-02 23:11   
[BOM]PHP程序的UTF8神秘编码问题之解
提示:采用UTF-8编码的用户请勿使用记事本对代码文件及模板文件进行编辑,使用可以去掉 Unicode 签名(BOM)的工具进行编辑。如果您的网站打开一片空白、样式丢失、程序报错很可能是您使用了未能去掉BOM的工具对模板文件或源码文件进行了修改。

现在几乎所有的文本编辑软件都可以显示并编辑UTF-8编码的文件。但是很遗憾,其中很多软件的表现并不理想。
类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,BOM是个大麻烦。

PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!

最大的麻烦还不是这个。受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。

因此,在编辑、更改任何文本文件时,请务必使用不会乱加BOM的编辑器。Linux下的编辑器应该都没有这个问题。WINDOWS下,请勿使用记事本等编辑器。推荐的编辑器是: Editplus 2.12版本以上; EmEditor; UltraEdit(需要取消‘添加BOM’的相关选项); Dreamweaver(需要取消‘添加BOM’的相关选项)等。
对于已经添加了BOM的文件,要取消的话,可以用以上编辑器另存一次。

EditPlus设置去除BOM头(UTF-8 签名)的方法:
打开EditPlus之后,“工具”-》“选项”-》“文件”=》“UTF-8标识” “总是删除签名”。 http://www.6kbbs.net/uploadfile/attachment/201105/1_1304347811_7614.jpg

在Dreamweaver 里可以修改,去掉Unicode 签名(BOM)
点菜单栏里的修改 -> 页面属性,或直接按 Ctrl+J 快捷键。
该帖子于 2011-05-02 23:12 编辑过
官网虚拟主机购买:QQ 70767766

zglj722

幼儿园
帖子
金钱
魅力
威望
注册
2011-05-02 
zglj722 发表于 2011-05-03 09:55   
RE:[BOM]PHP程序的UTF8神秘编码问题之解
用小工具转换下也可以啊。。。

aaasky

学士
帖子
171 
金钱
1675 
魅力
12 
威望
12 
注册
2004-11-26 
aaasky 发表于 2011-06-17 12:30   
RE:[BOM]PHP程序的UTF8神秘编码问题之解
受教了,谢谢老大
  • 回复
3条记录