Unicode получает кодированный CURL PHP - PullRequest
1 голос
/ 01 мая 2020

    if ($_GET["link"]!=""){
$curl = curl_init('http://exaple.com'.$link);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');

$page = curl_exec($curl);
echo $page;
}

Привет, сайт на другом языке. символы закодированы. я осознаю "??" и странные тексты вместо символов "а" "я" "а" и т. д. c (Unicode). Есть ли способ заставить его работать?

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Сначала вы должны определить кодировку символов исходного сайта.

Выберите страницу и загрузите ее ... с помощью терминала введите:

$ curl -D headers.txt -o page.html http:/www.example.com/index.html

Заголовки ответов сохраняются в headers.txt, а источник страницы html сохраняется в page.html

. Проверьте два файла с помощью текстового редактора и найдите Content-Type. Вы должны найти указание кодировки символов. по крайней мере, в одном из них.

Если вы не добились успеха, вы можете использовать file, чтобы попытаться «угадать» кодировку символов, проверив содержимое файла:

$ file -I page.html

вывод выглядит следующим образом:

page.html: text/plain; charset=iso-8859-1

Второй Вы должны решить или понять, что такое набор символов destination :

  • Вы храните веб-страницу в текстовом файле? Какова ожидаемая кодировка символов файла?

  • Вы анализируете веб-страницу в пределах PHP, чтобы получить некоторые данные, которые вас интересуют?

  • Вы обслуживаете веб-страницу (полностью или частично) на своем веб-сайте? Какая кодировка символов на сайте?

Предположим (например), что вы хотите получить символы Unicode, закодированные как UTF-8 .


Наконец улучшите ваш скрипт PHP, чтобы сделать правильное преобразование кодировки после получения страницы с помощью $page = curl_exec($curl);

Вы можете использовать mb-convert_encoding

$page = mb_convert_encoding( $page, 'ISO-8859-1', 'UTF-8' );
//                      from ----------^            ^--------to

В качестве альтернативы iconv могут использоваться для той же цели.

0 голосов
/ 01 мая 2020

Вы можете использовать разные методы.

1. Метод Iconv

$text = iconv("Windows-1252","UTF-8",$text);

2. Метод UTF8_DECODE, если это ISO-8859- 1.

$text = utf8_encode($text);

3. Добавьте правильную кодировку к вашему запросу curl.

curl_setopt($ch, CURLOPT_ENCODING, "");

и другие. Это зависит от того, какой тип кодировки вы используете.

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