utf 8 - php输出的奇怪的扩展ASCII/非打印字符(字节顺序标记?


utf 8 - Strange extended ascii / non printing characters output by php (byte order mark?)

我继承了一个庞大的php网站。这个网站在实时服务器上运行良好,但是我们有一个沙盒/QA服务器可以进行更改,并且在此服务器上(几乎可以肯定具有不同的PHP设置等),我看到在我想要的内容之前输出了一些奇怪的字符。

它们引起了许多问题,到目前为止,我已经通过在 php 脚本开始时以及分别在输出内容之前使用 ob_start()ob_clean_end() 来"修复"它们。

但是,我

现在已经遇到了这个问题一次,太多了,以至于我无法继续下去。 站点更改将于下周上线,沙盒/QA服务器有可能成为实时服务器。 如果发生这种情况,我想确保此问题不会再次随机弹出。

有谁知道为什么带有 ASCII 代码的字符(如 ord() 报告的那样)第239、187和191段。

它们

似乎是 UTF-8 的字节顺序标记,但我不知道它们为什么在那里或如何防止它们在那里......

UTF8 字节顺序标记由某些编辑器放置在 UTF8 编码文件中。它们不是必需的,因此解决问题的最佳方法是从文件中删除所有 BOM。

如果您有很多文件,最好使用脚本来自动化它。你可以在谷歌上找到这样的脚本的例子,比如这个