file_get_contents 显示 utf-8 字符,如问号

Posted

技术标签:

【中文标题】file_get_contents 显示 utf-8 字符,如问号【英文标题】:file_get_contents show characters of utf-8 like question marks 【发布时间】:2016-09-02 10:51:34 【问题描述】:
$str = "https://www.google.com/search?q=sd";
echo file_get_contents($str);

我正在尝试使用函数 file_get_contents 从谷歌加载页面,但 utf-8 字符的输出显示为问号。

我已经尝试了这里介绍的所有可能性: file_get_contents() converts UTF-8 to ISO-8859-1 但是问题还是没有解决。

非常感谢任何帮助。

更新:

我通过谷歌看到问题存在,其他网站内容显示正确。

【问题讨论】:

只是为了确保 - 您是否发送了一个标头以确保您的 php 脚本被解析为 UTF-8? 我该怎么做? 您的第一个声明(在发送任何 html 之前)应该是 header("Content-Type: text/html; charset=utf-8"); 谢谢,但它不起作用。 【参考方案1】:

[php]

//charset.php?case=1
//charset.php?case=2
//charset.php?case=3

$case = isset($_GET['case']) ? $_GET['case'] : 1;

if( !in_array($case,range(1,3)) ) $case = 1;


if( $case==1 ) 
    header("Content-type: text/html; charset=tis-620"); //http://htmlpurifier.org/docs/enduser-utf8.html
    $str = "https://www.google.co.th/search?q=sd";


if( $case==2 ) 
    header("Content-type: text/html; charset=ISO-8859-1");
    $str = "https://www.google.de/search?q=sd";
   

if( $case==3 ) 
    header("Content-type: text/html; charset=ISO-8859-9");
    $str = "https://www.google.com.tr/search?q=sd";



$data = file_get_contents($str);
echo $data;

[/php]

如您所见...... php 标头中的正确字符集是解决方案

【讨论】:

【参考方案2】:

尝试此代码对我有用..

    <?php 
$abc = array('http' => array('header' => 'Accept-Charset: UTF-8, *;q=0'));
$some_context = stream_context_create($abc);
$filename = "https://www.google.com/search?q=sd";
echo file_get_contents($filename, false, $some_context);
    ?>

【讨论】:

谢谢,但我又试了一次,它对我不起作用:( 反应一样吗?显示有特殊字符的问号?

以上是关于file_get_contents 显示 utf-8 字符,如问号的主要内容,如果未能解决你的问题,请参考以下文章

PHP file_get_contents 以不同的语言显示内容

如何使用 CURL 而不是 file_get_contents?

file_get_contents 不输出 svg

突然的 OpenSSL 错误消息:错误:14090086 使用 file_get_contents

如何使用 file_get_contents 或 file_get_html?

使用 ajax 时使用 php file_get_contents() 不起作用