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

时间:2016-09-02 10:51:34

标签: php utf-8 file-get-contents

$str = "https://www.google.com/search?q=sd";
echo file_get_contents($str);

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

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

非常感谢任何帮助。

更新

我发现Google存在问题,其他网站内容也能正确显示。

enter image description here

2 个答案:

答案 0 :(得分:2)

[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标题中正确的字符集是解决方案

答案 1 :(得分:1)

尝试一下这个代码对我有用..

    <?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);
    ?>