我有以下代码:
<?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。但我不希望这样。这有什么不对?
答案 0 :(得分:1)
您传递给CURLOPT_ENCODING
的值是(a)无效,(b)无意义,因为它不会强制使用Curl将其获取的内容转换为您想要的编码。如果远程站点返回ISO-8859-1,那么您必须自己将其转换为UTF-8。
CURLOPT_ENCODING
用于在获取页面时接受Accept-Encoding:
标头。有效值为"identity"
,"deflate"
和"gzip"
。如您所见,它对字符集编码没有意义。