<tag>
Алекс М
</tag>
Коли я намагаюся отримати вміст наступного коду за допомогою функцій DOMDocument, він повертає щось на зразок:
ÐÐ»ÐµÐºÑ Ðœ
Я спробував встановити кодування DOMDocument на різні значення (utf-8, ISO-8859-1), використовуючи mb_convert_encoding, iconv та utf8_encode, але безуспішно.
Як я можу отримати "Алекс М" замість "Ðл ÐµÐºÑ Ðœ "?
РЕДАГУВАТИ: введення надходить зі сторінки, завантаженої завитком. Коли я вивожу вміст сторінки у свій браузер, символи відображаються правильно (тому я сумніваюся, що проблема полягає у введенні).
Відповіді:
42 для відповіді № 1Спробуйте:
$string = file_get_contents("your-xml-file.xml");
$string = mb_convert_encoding($string, "utf-8", mb_detect_encoding($string));
// if you have not escaped entities use
$string = mb_convert_encoding($string, "html-entities", "utf-8");
$doc = new DOMDocument();
$doc->loadXML($string);
19 за відповідь № 2
У мене була подібна проблема після використання XPath для синтаксичного аналізу DomDocument і після прочитання цього
https://bugs.php.net/bug.php?id=32547
Я вирішив це так
// Workaround because PHP 5.2.x has encoding problems, when we
// update to PHP 5.3 this line is not necesserry any more
$content = "<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />" . $content;
// Creating new DOM document and loading HTML content
$dom_document = new DOMDocument("1.0", "utf-8");
$dom_document->substituteEntities = TRUE;
$dom_document->loadHTML($content);
6 за відповідь № 3
Додайте заголовок xml до своїх тегів - спробуйте це:
$a = new DOMDocument ();
$a->loadXml ("<?xml version="1.0" encoding="utf-8"?><tag>Алекс М</tag>");
print htmlspecialchars ($a->saveXml ());