文件编码造成了格式错误!

     最近2天碰到一个很奇怪的问题,在页面的第一行碰到个很怪的问题,总是多出一行,很奇怪为什么会出现这种情况,仔细在这个页面出现的流程中,每处都加上exit();进行调试,一直调试到了com.php文件的第二行(第一行是<?php),依然多出一行,就很奇怪为什么了。

     一位牛人他在代码解析出现的页面中设置编码格式的时候,就发现多除了一个字符。就是因为这个字符,使得多出了一行。原来是编码的问题,就是在同一个项目中,有个代码页面的编码格式居然是UTF-8的有BOM格式,难怪!修改为无BOM后问题消失。那到底什么是BOM呢?

 

The byte order mark (BOM ) is a Unicode character used to signal the endianness (byte order) of a text file or stream. Its code point is U+FEFF . BOM use is optional, and, if used, should appear at the start of the text stream. Beyond its specific use as a byte-order indicator, the BOM character may also indicate which of the several Unicode representations the text is encoded in.[1]

 

微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节, windows上面的notepad等程序就是根据这三个字节来确定一个文本文件是ASCII的还是UTF-8的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8文本文件做个这样的标记。

因此源文件在使用BOM编码时,就先输出了3个字节,所以多出了一行!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值