Проблема с кодировкой php-curl windows-1253 в utf8

Я использую этот код для отображения данных на странице 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 ответ


Решил это, изменив на 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/');

Есть идеи?

10000