/ / PHP-Codierung mit DOMDocument - PHP, Dom, Zeichencodierung

PHP-Kodierung mit DOMDocument - php, dom, Zeichenkodierung

<tag>
Алекс М
</tag>

Wenn ich versuche, den Inhalt des folgenden Codes mithilfe von DOMDocument-Funktionen abzurufen, wird etwa Folgendes zurückgegeben:

ÐÐ»ÐµÐºÑ Ðœ

Ich habe versucht, die DOMDocument-Codierung mit mb_convert_encoding, iconv und utf8_encode auf verschiedene Werte (utf-8, ISO-8859-1) zu setzen, aber ohne Erfolg.

Wie kann ich "Алекс М" anstelle von "Ðл ÐµÐºÑ Ðœ "erhalten?

BEARBEITEN: Die Eingabe stammt von einer mit Locken geladenen Seite. Wenn ich den Seiteninhalt in meinem Browser ausgebe, werden die Zeichen korrekt angezeigt (daher bezweifle ich, dass die Eingabe das Problem ist).

Antworten:

42 für die Antwort № 1

Versuchen:

$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 für die Antwort № 2

Ich hatte ein ähnliches Problem, nachdem ich XPath zum Parsen von DomDocument verwendet und dieses gelesen hatte

https://bugs.php.net/bug.php?id=32547

Ich habe es so gelöst

// 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 für die Antwort № 3

Fügen Sie Ihren Tags XML-Header hinzu - versuchen Sie Folgendes:

$a = new DOMDocument ();
$a->loadXml ("<?xml version="1.0" encoding="utf-8"?><tag>Алекс М</tag>");
print htmlspecialchars ($a->saveXml ());