Curl: получить данные UTF-8 с сайта с неправильной кодировкой

Я царапаю некоторые сайты, которые иногда имеют символы 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 не может. Я прочитал много предложений, таких как этот: Как получить титул веб-страницы с CURL в PHP с веб-сайтов разных CHARSET?

Решение в целом, похоже, «преобразует данные в UTF-8». Честно говоря, я не знаю, что это значит. Не следует ли преобразовывать данные в UTF-8? Почему это не UTF-8? Что это такое, и почему он отображает должным образом в некоторых обстоятельствах, но не для cURL?

ты пробовал :

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

gb2312 был взят из заголовков qq.com