UTF-8编码引发的页面奇怪问题

问题表现:

1、双击打开html页面,显示正常,通过浏览器打开,表格顶部出现一个空行;
2、通过浏览器直接浏览Smarty编译后的php文件,显示正常,直接浏览含有display()的php页面,空行又出现
3、逐一排查各个问题,排除了HTML和CSS等其他原因

问题不大但很棘手,足足让我郁闷了一天。。。
究竟是什么带来的这个奇怪的空行呢?

问题分析:

会不会是之前修改了几个文件的编码导致的呢,之前那几个文件我用记事本直接从原来的ANSI编码转换成了UTF-8保存,而Smarty文件全部使用的ANSI编码,使用include包含文件时,就出现了空行。可这个空行究竟哪里来的呢?

到网上查了一下才知道,原来是因为UTF-8编码的文件头部被加入了BOM(万国码档案签名:Byte Order Mark, U+FEFF)标记。UTF-8编码方式对于BOM不是强制的,保存文件的时候会出现不同的处理方式。而大多数浏览器只会过滤掉一次BOM,当多次使用 include时,就会碰见这个问题。

问题解决:

用UE打开相应的php和html文件,切换到十六进制模式查看发现,果真在文件头部多了几个字符“EF BB BF”。都删掉之后再到浏览器浏览,空行终于消失了!

备注:

1) notepad(记事本) : 可以自动识别出没有带 bom 的 utf-8 编码格式文件,但不可以控制保存文件时是否添加 bom , 如果保存文件,那么会统一添加 bom 。
2)editplus(我经常用): 不能自动识别出没有 bom 的 utf-8 编码格式文件,保存文件为 utf-8 时会自动添加 bom
3) UltraEdit(UE,传说中最牛的十六位编辑器) : 对于字符编码的功能最为强大, 可以自动识别带 bom 和不带 bom 的 utf-8 文件 (可以配置); 保存的时候可以通过配置选择是否添加 bom.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值