卷曲:从具有错误字符集的站点获取UTF-8数据

时间:2012-02-25 20:05:50

标签: php curl character-encoding

我抓了一些偶尔在标题中有UTF-8字符的网站,但是没有指定UTF-8作为字符集(qq.com就是一个例子)。当我在浏览器中查看网站时,我要复制的数据(即标题)看起来是正确的(日文或中文......不太确定)。我可以复制标题并将其粘贴到终端中,它看起来完全一样。我甚至可以将它写入数据库,当我从数据库中检索时,它看起来仍然相同,并且正确。

但是,当我使用cURL时,打印的数据是错误的。我可以从命令行运行cURL或使用PHP ..当它打印到终端时它显然是不正确的,当我将它存储到数据库时它仍然是那样(记住:终端可以正确显示这些字符)。我已尝试过以下所有符合条件的组合:

  • CURLOPT_BINARYTRANSFER设为true
  • mb_convert_encoding($html, 'UTF-8')
  • utf8_encode($html)
  • utf8_decode($html)

这些都不会按预期显示字符。这非常令人沮丧,因为只要访问该网站我就能轻松获得正确的角色,但是cURL不能。我已经阅读了很多建议,例如:How to get web-page-title with CURL in PHP from web-sites of different CHARSET?

一般来说,解决方案似乎是将数据转换为UTF-8。"说实话,我实际上并不知道这意味着什么。不要将上述功能转换为UTF-8吗?为什么它不是UTF-8?它是什么,为什么它在某些情况下正确显示,但不适用于cURL?

1 个答案:

答案 0 :(得分:4)

你试过了吗?

$html = iconv("gb2312","utf-8",$html);

gb2312来自qq.com标题