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

来源:互联网 发布:淘宝商城花卉 编辑:程序博客网 时间:2024/05/23 00:11

     最近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 thetext stream. Beyond its specific use as a byte-order indicator, the BOMcharacter may also indicate which of the several Unicoderepresentations the text is encoded in.[1]

 

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

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

原创粉丝点击