我正在尝试从一个网站上提取中文单词。
我使用简单的cURL代码:
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
echo $response;
其中一个词的预期结果是
网络频率
但是我得到了这个:
ÍøÂçƵÂÊ
如果我url编码字的结果是不同的。
我最近有编码问题。中文字符是UTF8还是什么?谁能帮助我的字符会显示"正常"与回声,如果我url编码他们的结果将是一样的,如果我把它们从网站上复制。
欢呼
中文通常是UTF-8,是的。您遇到的问题可能不是数据没有正确接收(cURL知道它在做什么),而是您没有正确地将它们发送到浏览器。
在你的页面顶部试试:
header('Content-Type: text/html; charset=utf-8');
这将告诉浏览器你正在发送UTF-8信息。
Update:如果这不起作用,可能是PHP本身没有正确处理它们。试着在你的echo
中玩utf8_encode
和utf8_decode
。如果thàt不工作,那么cURL没有正确解码流,这意味着您必须在响应中查找Content-Type
标头并相应地解码流。
试试这个,
1)创建一个新文档,并确保文档是UTF-8兼容
2)使用金属标签:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3)我不建议强迫header使用utf-8,而只是使用ini_set
ini_set('default_charset', 'UTF-8');
如果您从另一个页面调用curl函数,请确保该页面能够携带UTF-8字符并将其传递到与UTF-8兼容的页面。