PHP - 禁用错误报告时的奇怪字符

时间:2009-07-17 15:53:49

标签: php

这基本上就是我正在做的所有

echo @file_get_contents("http://******.org/ti.php?i=".$i."&s=".$s);

但是,当我从该服务器中删除ti.php文件以测试它是否隐藏错误时,我会在浏览器中看到错误:



到底是什么(笑)?我以前从未见过它,也无法想出它出现的原因,任何想法的解释?

2 个答案:

答案 0 :(得分:10)

http://en.wikipedia.org/wiki/Byte-order_mark

这是一张被视为iso-8859-1的UTF-8空白文件的BOM。

file_ get_contents会生成错误,但不会显示,因此这基本上是一个空白的UTF-8文档。

没有任何字符集信息,浏览器会将其显示为iso-8859-1文档,因为它必须是默认设置。因此,BOM显示为这些奇怪的字符。

编辑:

确实,我复制了你问题的三个字符,将它们粘贴在一个文档中,查看了十六进制代码:EF BB BF,这是UTF-8的BOM。

答案 1 :(得分:1)

要了解FWH的答案,请确保使用内容类型标题中的正确编码将内容输出到浏览器。

最简单的方法就是设置默认字符集

ini_set( 'default_charset', 'UTF-8' );
echo @file_get_contents("http://******.org/ti.php?i=".$i."&s=".$s);

但如果您愿意,可以使用显式的header()调用。