然后我就查了一下相关资料。原来UTF-8 no BOM与UTF-8 BOM之间的区别是文件开始处的三个字节!这彻底颠覆了我对文本文件的理解。这是我第一次发现文本文件居然还有这种文件头部!
用
cat -v
就看到了前面的三个非打印字符。
$ cat -v admin.php
M-oM-;M-?<?php
然后我又用hexdump看了一下:
$ hexdump admin.php
0000000 bbef 3cbf 703f 7068 2f0a 722f 7165 6975
0000010 6572 6f5f 636e 2865 6627 6e75 7463 6f69
红色部分的其中三个字节就是UTF-8的BOM(Byte Order Maker,字节序列标记)。因为x86属于big edian,所以,字节序列是倒的,正常顺序是:efbbbf。
然后又发现,原来这个问题已经非常有历史了:http://bugs.php.net/bug.php?id=22108。
至此,问题解决。
p.s. 写代码,Linux用着真是非常顺手。 :)
没有评论:
发表评论