开发者社区 问答 正文

带bom的utf8 php文件 偶尔出现乱码的问题

有没有人遇到过类似的情形呢?

因为不是一直出现,而且尝试过最简单的代码也出问题,就没往代码方面去想,一直在纠结是不是php扩展出了问题。

后来同事把bom去掉就好了,惊喜之余更多的是郁闷。太丢人了

虽然问题解决了,但具体是什么原因呢?

展开
收起
落地花开啦 2016-06-16 13:24:11 2460 分享 版权
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    Unicode是唯一的,但Unicode的编码方式不是唯一的。编码方式可能是唯一的,但大端小端在前还不一定是唯一的。光说打开一个“Unicode”文件,其实不太容易做。

    BOM就是把一个Unicode保留字符U+FEFF,按照文件存储者的编码方式编码后,塞到文件内容的最前边。这样用不同的Unicode编码去解析文件头,就可以得知文件的编码方式和大小端顺序。结果就是文件头部多出来了两三个字节。

    有了BOM所有的程序都必须为BOM作出修改,这无疑是一个“大折腾”的行为。所以一般不认为BOM是个好主意。BOM引发的问题,我能想起来两个:

    1.PHP无法指定header(因为有BOM相当于开启输出)
    2.UNIX可执行脚本的Shabang标记(#!)不能识读

    任何时候都采用无BOM的UTF-8编码的Unicode,绝对是一个引发麻烦最少的最实用策略。UTF-8是Unicode的最佳实践,没有之一。

    2019-07-17 19:40:43
    赞同 展开评论
问答分类:
问答地址: