Я царапаю некоторые сайты, которые иногда имеют символы 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