2010-07-10 2 views
0

Я пытаюсь получить содержимое этого URL-адреса: http://www.chromeball.com, но кодировка символов не очень хорошая.Ошибка кодирования символов!

У меня есть этот код:

$url = 'http://www.chromeball.com'; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
$data = curl_exec($ch); 
curl_close($ch); 


$dom = new DOMDocument(); 
$dom->loadHTML($data); 
$xpath = new DOMXPath($dom); 
$nodes = $xpath->query('//text() | //@alt | //@title | /html/head/meta[@name="description"] | /html/head/meta[@name="keywords"]'); 
foreach($nodes as $node) { 
    $textNodeContent .= " ".$node->nodeValue; 
} 

$enc = mb_detect_encoding($textNodeContent,'iso-8859-2,iso-8859-1,utf-8'); 
print iconv($enc,'utf-8//TRANSLIT',$textNodeContent); 

Но это не работает. Кодировка символов неверна. Как я могу преобразовать $ textNodeContent в utf-8? Благодарю.

+0

Просьба сообщить о «кодирование является неправильным ». Кроме того, согласно быстрому тесту, страница хранится в utf8. – Maerlyn

+0

mb_detect_encoding ($ textNodeContent, iso-8859-2, iso-8859-1, utf-8 ') return iso-8859-2. Когда я печатаю $ textNodeContent, не отображается правильно. – turbod

+0

Почему вы 'iconv()' в первую очередь? Кодировка уже должна быть utf-8 с самого начала. –

ответ

0

Из комментариев на странице mb_detect_encoding, похоже, что функция не особенно надежна. Chrigu (см пост от 29-Mar-2005 3:32), предлагает размещение UTF-8 в качестве первой кодировки символов в списке:

$enc = mb_detect_encoding($textNodeContent,'utf-8,iso-8859-2,iso-8859-1'); 

Я попробовал это, и теперь он показывает содержимое, которое UTF- 8. Тем не менее, я только что попробовал с ISO-8859-1 содержанием, и он обнаруживает, что, как UTF-8 тоже ...

+0

Спасибо, но когда я пытаюсь распечатать содержимое, не показывайте правильно. – turbod

0

Initialize DOM, как это:

$dom->loadHTML('<?xml encoding="UTF-8">' . $data); 
+0

несчастливо не решена проблема. – turbod

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