Curl: получить данные UTF-8 с сайта с неверной кодировкой - PullRequest
1 голос
/ 26 февраля 2012

Я очищаю некоторые сайты, в которых иногда есть символы 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?

1 Ответ

4 голосов
/ 26 февраля 2012

вы пробовали:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...