从utf8文件获取utf8 DOM

时间:2015-04-23 21:31:14

标签: php utf-8

我有以下代码:

<?php

header('Content-Type: text/html; charset=utf-8');

function getSource($url)
{
    if (!function_exists('curl_init'))
    {
        die('CURL is not installed!');
    }

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_ENCODING, "UTF-8");
    $output = curl_exec($ch);
    curl_close($ch);

    return $output;
}

$source = getSource('http://www.website.com/');
var_dump($source); die();

文件本身是UTF-8。问题是输出的UTF-8字符没有正确显示。相反,它们被示出为问号,或一些其它垃圾。

我发现解决这个问题的唯一方法是将文件编码为ISO-8859-1。但我不希望这样。这有什么不对?

1 个答案:

答案 0 :(得分:1)

您传递给CURLOPT_ENCODING的值是(a)无效,(b)无意义,因为它不会强制使用Curl将其获取的内容转换为您想要的编码。如果远程站点返回ISO-8859-1,那么您必须自己将其转换为UTF-8。

CURLOPT_ENCODING用于在获取页面时接受Accept-Encoding:标头。有效值为"identity""deflate""gzip"。如您所见,它对字符集编码没有意义。