китайские символы - кодировка PHP - PullRequest
2 голосов
/ 18 декабря 2011

Я пытаюсь извлечь китайские слова из веб-сайта.

Я использую простой код cURL:

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);

echo $response;

Ожидаемый результат для одного из слов:

网络频率

Однако я получаю это:

ÍøÂçƵÂÊ

Кроме того, если я url кодировать результат слова отличается.

У меня проблемы с кодированием в последнее время.Китайские символы UTF8 или что?Может ли кто-нибудь помочь мне, что символы будут показывать "нормально" с эхом, и если я буду их кодировать, результат будет таким же, как если бы я скопировал их с веб-сайта.

Приветствия

Ответы [ 2 ]

4 голосов
/ 18 декабря 2011

Китайский, как правило, UTF-8, да.Возможно, проблема в том, что данные не получены правильно (cURL знает, что они делают), а в том, что вы неправильно отправляете их в браузер.

Попробуйте это на верхней панелистраница:

header('Content-Type: text/html; charset=utf-8');

Это сообщит браузеру, что вы отправляете информацию UTF-8.

Обновление : если это не работает, возможноСам PHP не обрабатывает их должным образом.Попробуйте поиграть с utf8_encode и utf8_decode немного в вашем echo.Если это не работает, то cURL не декодирует поток должным образом, что означает, что вам придется искать заголовок Content-Type в ответе и соответствующим образом декодировать поток.

2 голосов
/ 18 декабря 2011

Попробуйте,

1) создайте новый документ и убедитесь, что документ совместим с UTF-8

2) Используйте металлический тег:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

3) Я бы не рекомендовал использовать заголовок с использованием utf-8, но просто используйте ini_set

ini_set('default_charset', 'UTF-8');

, если вы вызываете функцию curl с другой страницы, убедитесь, что страница способна содержать символы UTF-8и передать его на UTF-8-совместимую страницу.

...