2015-04-23 4 views
1

У меня есть следующий код:Получить utf8 DOM из utf8 файла

<?php 

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

function getSource($url) 
{ 
    if (!function_exists('curl_init')) 
    { 
     die('CURL is not installed!'); 
    } 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_ENCODING, "UTF-8"); 
    $output = curl_exec($ch); 
    curl_close($ch); 

    return $output; 
} 

$source = getSource('http://www.website.com/'); 
var_dump($source); die(); 

И сам файл находится в UTF-8. Дело в том, что символы UTF-8 вывода отображаются неправильно. Вместо этого они отображаются как вопросительные знаки или какой-то другой мусор.

И единственное, что я решил решить, это кодировать файл как ISO-8859-1. Но я не хочу этого. Что здесь не так?

ответ

1

Значение вы передаете CURLOPT_ENCODINGявляется (а) недействительным, и (б) смысла, в том, что она не заставит Curl переводить содержимое, выбирающий в кодировку вы хотите. Если удаленный сайт возвращает ISO-8859-1, вам необходимо перевести его на UTF-8 самостоятельно.

CURLOPT_ENCODING используется для приема заголовка Accept-Encoding: при извлечении страницы. Допустимые значения: "identity", "deflate" и "gzip". Как вы можете видеть, это не имеет значения для кодировки набора символов.

+1

Возможно, стоит упомянуть о некоторых способах преобразования - 'mb_convert_encoding' и' iconv' приходят на ум. – IMSoP

Смежные вопросы