加入php后样式混乱,PHP+Smarty模板中CSS问题:Firefox下正常显示,而在IE下,显示得很混乱...

先制作好了页面的模板(用UTF-8编码),当载入Smarty运行的时候,发现在Firefox下正常显示,而在IE下,显示得很混乱!难道 是smarty和CSS结合有问题?PHP+Smarty时显示混乱,而不用Smarty转而采用原始的PHP+HTML混写的时候则无此现象,查阅代 码,无法找出任何破绽,因此开始怀疑Smarty有问题。

根据以往的经验,我开始怀疑是当PHP输出HTML的时候向其中加入了额外的不可见代码,于是将PHP输出的内容原封不动保存为HTML,然后提交到

validator.w3.org[

这个网站很有用,可以帮你检测html的错误信息]进行XHTML验证,果然,验证失败,提示文件头部被加入了BOM(万国码档案签名:Byte Order Mark, U+FEFF)标记,妈的,就是这个垃圾标记,已经不是第一次害我了!

于是,重新打开DM和UltraEdit重新对PHP页面以及模板页面进行编码转换,去除了其中的BOM标记,一切正常!

解决此问题的最简单的方法是:把原来的模板文件及php文件用

UltraEdit

打开,然后重新保存时选择 UTF-8-无BOM格式即可。呵呵,是不是很简单呢。这是我在建我的小站:创意产品网 www.cygoods.com

过程中遇到的问题,记录下来,希望能对遇到同样问题的人有所帮助。

(

切记把所的文件都进行相应转换)

这里附上一篇写的很全面的有关BOM的文章,希望能帮助和我一样受害的人。

=================================================================

utf-8 保存文件的 bom 问题大家都知道 utf-8 是一种在web应用中经常使用的一种 unicode 字符的编码方式,使用 utf-8 的好处在于它是一种变长的编码方式,对于 ANSII 码编码长度为1个字节,这样的话在传输大量 ASCII 字符集的网页时,可以大量节约网络带宽。

不过如果大家使用 utf-8 编码来编写网页的时候, 往往会因为 bom (Byte Order Mark) 的问题,导致网页中经常出现一些不明的空行或者乱码字符。 这些都是因为 utf-8 编码方式对于 bom 不是强制的。因此 utf-8 编码在保存文件的时候,会出现不同的处理方式。

比如有的浏览器(FireFox)可以自动过滤掉所有 utf-8 bom , 有的 (IE) 只能过滤掉一次 bom (为什么是一次? 当你出现 Include 多次文件时就会碰上这个问题了:) );

对此 w3.org 标准 FAQ 中对此问题有一个专门的描述:

在此个人认为对于这个问题最好的处理方式就是在编辑(保存)文件的时候统一去除 utf-8 bom , 同时又必须使得编辑器可以正确读出 utf-8 字符集,但可惜目前 windows 系统中对于保存文件的处理方式缺省情款下都会自动加上 bom.

(通过抓包工具分析, google 中文页面统一使用 utf-8 编码方式,下载的页面中没有带有 bom 标识)

操作系统: WindowsXP Professional , 缺省字符集:中文

1) notepad : 可以自动识别出没有带 bom 的 utf-8 编码格式文件,但不可以控制保存文件时是否添加 bom , 如果保存文件,那么会统一添加 bom 。

2)editplus : 不能自动识别出没有 bom 的 utf-8 编码格式文件,保存文件为 utf-8 时会自动添加 bom

3) UltraEdit : 对于字符编码的功能最为强大, 可以自动识别带 bom 和不带 bom 的 utf-8 文件 (可以配置) ; 保存的时候可以通过配置选择是否添加 bom.

(特别需要注意的是,保存一个新建立的文件时,需要选择另存为 utf-8 no bom 格式)

后来发现 Notepad ++ 也对于 utf-8 bom 支持比较好,推荐大家使用。

第二个:设置不显示Notice

首先,这个不是错误,是warning。所以如果服务器不能改,每个变量使用前应当先定义。

方法1:服务器配置修改

修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE

方法2:对变量进行初始化,规范书写(比较烦琐,因为有大量的变量)。但还没有找到好定义方法,望大家指教

方法3:每个文件头部加上:error_reporting(0); 如果不行,只有打开php.ini,找到display_errors,设置为display_errors = Off。以后任何错误都不会提示。

总结:

若是有bom就是用第二个设置了不显示Notice也会出现样式乱的情况,所以最根本的还是解决掉bom

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值