【问题标题】:PHP - Weird characters when disabling error reportingPHP - 禁用错误报告时出现奇怪的字符
【发布时间】:2009-07-23 06:40:32
【问题描述】:

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

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

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



那是什么鬼(笑)?我以前从未见过它,也想不出它为什么会出现的解释,有什么想法吗?

【问题讨论】:

  • 这可能是您的服务器正在返回的东西吗?如果您在不同的域(使用不同的网络服务器)上调用 file_get_contents() 会产生类似的结果吗?

标签: php


【解决方案1】:

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。

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      相关资源
      最近更新 更多