Проблема с кодировкой php-curl windows-1253 в utf8 - PullRequest
0 голосов
/ 14 мая 2019

Я использую этот код для отображения данных на странице php:

$url = 'http://example.com';

//Initiate cURL and pass it the URL we want to retrieve.
$ch = curl_init($url);

//Tell cURL to return the output as a string.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

//Execute the cURL request and return the output to a string.
$response = curl_exec($ch);

//Print out the response to the browser.
echo mb_detect_encoding($response);
echo utf8_encode($response);

Последние две строки содержат методы отладки, которые я пробовал в последний раз. Mb_detect_encodign возвращает UTF-8 для моего контента, даже если исходный URL-адрес содержит кодировку windows-1253 в своей кодировке.

Контент отображается неправильно - он возвращает символы вроде: õìðëçñþóôå вместо исходного контента, который ожидается греческими символами.

Я знаю, что Windows-1253 не поддерживается PHP, однако, похоже, что phpcurl преобразует его в UTF8 - но в моем случае это делается неправильно.

Я попытался добавить заголовок php, но безуспешно. Также попытался добавить mb_convert_encoding безуспешно.

Любые советы?

1 Ответ

0 голосов
/ 14 мая 2019

Решил это, изменив на file_get_contents:

function file_get_contents_utf8($fn) { 
     $content = file_get_contents($fn); 
      return mb_convert_encoding($content, 'UTF-8', 
          mb_detect_encoding($content, 'UTF-8, ISO-8859-7', true)); 
} 

print file_get_contents_utf8('http://example.com/');
...