php dom character-encoding

Codificación PHP con DOMDocument



character-encoding (3)

Agregue encabezado xml a sus etiquetas; intente esto:

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

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

Cuando trato de obtener el contenido del siguiente código usando las funciones DOMDocument, devuelve algo como:

ÐÐ»ÐµÐºÑ Ðœ

Intenté configurar la codificación DOMDocument en diferentes valores (UTF-8, ISO-8859-1), usando mb_convert_encoding, iconv y utf8_encode pero sin éxito.

¿Cómo puedo obtener "Алекс М" en lugar de "Ðл ÐμÐºÑ Ðμ ""?

EDITAR: la entrada proviene de una página cargada con curl. Cuando envío el contenido de la página a mi navegador, los caracteres se muestran correctamente (así que dudo que la entrada sea el problema).


Tratar:

$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);


Tuve un problema similar después de usar XPath para analizar DomDocument, y después de leer esto

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

Lo solucioné así

// 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);