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