首 页  >>  E商学院  >>  zencart百科  >>  不要用记事本编辑PHP文档

不要用记事本编辑PHP文档

Windows 系统下默认的记事本, 小巧灵活,开启迅速,
因此有许多童鞋喜欢用他直接编辑 Code
但在用记事本编辑处理 UTF-8 编码的
PHP 文件时,有时会莫名其妙出现一些问题;



页面显示一个 "锘"
字,其他一片空白;
不能登入或者不能登出;
页顶出现一条空白;
页顶出现错误警告;
其它不正常的情况;
生成的图片浏览器无法识别.
本来好好的页面莫名其妙的错位了却找不到任何HTML标签结构逻辑上的错误
...............
等诸如此类莫名其妙的问题.


原因分析:


文件以UTF-8编码保存时,
有两种情情况:带 Unicode签名(BOM)和不带 Unicode
签名.
BOM 信息是文件开头的一串隐藏的字符,
用于让某些编辑器识别这是个 UTF-8 编码的文件.


类似
WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,
会在文件开始的地方插入三个不可见的字符(0xEF 0xBB
0xBF,即BOM——Byte Order Mark).
它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否为 UTF-8
编码.
对于一般的文件,这样并不会产生什么麻烦。


但对于 PHP 来说, 问题就大条了!
PHP 在设计时就没有考虑到
BOM 的问题,
不会忽略 UTF-8 编码文件开头 BOM 那三个字符,
会把 BOM 作为该文件开头正文的一部分.
由于BOM 的存在
所以将会造成在页面上输出这三个字符,
而最终的显示效果就要看各个浏览器自己的解析规则了,
一般大多会显示出一个空行或是一个乱码.
由于在 html
一开头有这3个字符的存在,
即使页面的 top padding 设置为0, 也无法让整个网页紧贴浏览器顶部.
由于受 COOKIE 送出机制的限制,
在这些文件开头已经有 BOM 的文件中,
COOKIE 无法送出(因为在 COOKIE 送出前 PHP
已经送出了文件头),
所以登入和登出功能失效.一切依赖 COOKIE, SESSION 实现的功能全部无效.


由此 就不难理解为什么有些童鞋 在用记事本 编辑处理了 Zen
Cart 某些文件时,
莫名其妙的出现了 各种无厘头的问题, 而又无任何错误日志的产生!


哪么知道了原因 我就针对性的于以解决


在编辑 更改任何文本文件时, 请务必使用不会乱加 BOM 的编辑器.
Linux
下的编辑器应该都没有这个问题.
WINDOWS下,就请切勿使用记事本等编辑器,


这里推荐几款编辑器


Editplus
2.12版本以上;
EmEditor;
UltraEdit(需要取消‘添加BOM’的相关选项);
Dreamweaver(需要取消‘添加BOM’的相关选项)
phpDesigner
等 都是不错的选择.


对于已经添加了 BOM 的文件,要取消的话,可以用以上编辑器另存一次.


我个人是极力推荐 使用 EditPlus 这款编辑器
一呢 是他同记事本一样小巧
启动速度一样的快 但功能确强大的多
二呢 是他的编码兼容性和处理上较好
仅平时修改个别文件时 还是相当便捷的.
至于 Dreamweaver
这个不用多说了, 地球人都知道,
而 phpDesigner 是款不错的 PHP IDE,
熟悉PHP的同学都知道.
但仅就平时应用维护或修改个别文件 而动用这两个大块头,貌似有点杀鸡用牛刀的感觉.
当然 这里更多的是个人的使用习惯
操作熟悉程度和喜好等因素来决定,
就最终应用上 效果都是一样的


综上所述, 虽然记事本方便小巧, 但在我们日常维护 Zen Cart 编辑修改文件时,
确应当极力避免使用他,


有些童鞋可能会说, 我平时就是用记事本的啊,也没见碰上啥问题啊!
是的, 使用记事本编辑 UTF8 编码的PHP文件时, 并不是说
一定就会出问题,
没出问题是因为 这些文件当初在保存为文档时 以经去除了 BOM 信息,
所以 再用记事本编辑这些文件时 能饶幸
逃过这些错误


但如果 碰上 头部包含有 BOM 信息的文档时, 用记事本 则一定会出错,
哪怕是简单的打开再关闭文件,都会造成上面提到过的哪些错误,
所以
如果不想被这些麻烦缠身, 就请一定不要用记事本 这是最好最稳妥的选择.




点击次数:7003  发布日期:2013-04-15  【打印此页】  【关闭