schweppes
Новичок
DomDocument ломается кодировка
Здравствуйте!
При загрузке файла в DomDocument ломается кодировка. Изначально файл написан в cp1251, читал, что DomDocument подразумевает, что xml файл должен быть в utf-8 (или в utf-16, т.к. положено по стандарту). Для этого пытаюсь перекодировать исходный файл. Вот код:
Но ноды все равно выводятся в кривой кодировке. Без начальной перекодировки тоже самое. Если пытаться перекодировать текст ноды и слать соответствующий content-type браузеру тоже не помогает (причем каждый раз разные кракозяблы, я не могу определить, что за кодировка получается). В Html DTD указан 4.01 strict, но сам документ не является well-formed, если это все имеет значение.
Заранее спасибо.
Здравствуйте!
При загрузке файла в DomDocument ломается кодировка. Изначально файл написан в cp1251, читал, что DomDocument подразумевает, что xml файл должен быть в utf-8 (или в utf-16, т.к. положено по стандарту). Для этого пытаюсь перекодировать исходный файл. Вот код:
PHP:
error_reporting(E_ALL ^ E_WARNING);
$fp = fopen("html/drive/drive.ru.html","r");
$contents = fread($fp,filesize("html/drive/drive.ru.html"));
fclose($fp);
$contents = mb_convert_encoding($contents,'UTF-8','WINDOWS-1251');
$fp = fopen("html/drive/drive.ru2.html","w+");
fwrite($fp,$contents);
fclose($fp);
$dom = new DomDocument();
$dom->loadHTMLFile("html/drive/drive.ru2.html");
echoDomDocument($dom);
function echoDomDocument($node) {
foreach($node->childNodes as $childNode) {
if($childNode->hasChildNodes())
echoDomDocument($childNode);
elseif($childNode->nodeType == XML_TEXT_NODE && strlen(trim($childNode->textContent)) > 0)
print($childNode->textContent)."<br/>";
}
}
Заранее спасибо.