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