我有以下代码:
<?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。但我不想这样。这是怎么回事?
发布于 2015-04-24 18:05:23
您传递给CURLOPT_ENCODING的值是(a)无效的,(b)毫无意义,因为它不会强制Curl将其获取的内容转换为您想要的编码。如果远程站点返回ISO-8859-1,那么您必须自己将其转换为UTF-8。
CURLOPT_ENCODING用于在获取页面时接受Accept-Encoding:标头。有效值为"identity"、"deflate"和"gzip"。正如您所看到的,它对字符集编码没有任何意义。
https://stackoverflow.com/questions/29834701
复制相似问题