English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En PHP, para la operación de DOMDocument de xml, si es en inglés no hay problemas, pero si es en caracteres chinos habrá problemas de caracteres ilegibles. A continuación, les presentamos algunas soluciones a este problema.
El DOM interno de PHP es utf8El mecanismo, al cargar el HTML, establece la codificación mediante la comprobación del charset en meta de los caracteres, si no hay charset, se considera iso8859se ha procesado, y en este caso, al realizar saveXML, la salida es utf8, por lo que ves el garabato.
Dicho esto, ¿aún no te queda claro? Te daré un ejemplo:
$xml = new DOMDocument(); @$xml->loadHTML('<div>Yo estoy probando para ver</>div>'); $dom = new DOMXPath($xml); echo $dom->query('//>div')->item(0)->saveXML();
Abre la página web y ejecuta, encontrarás que la salida es garabato, ¿cómo resolver este problema? Hay dos formas.
Primera manera: especifica la codificación en loadHTML, el siguiente código se cita de la respuesta en el documento oficial php.net, el código es el siguiente:
$doc = new DOMDocument(); $doc->loadHTML('<?xml encoding="UTF-8">' . $html); foreach ($doc->childNodes as $item) { if ($item->nodeType == XML_PI_NODE) { $doc->removeChild($item); // quitar trampa } } $doc->encoding = 'UTF-8'; // insertar adecuado
Segunda manera: convierte de nuevo los caracteres de salida a través de iconv, el código es el siguiente:
echo iconv("UTF-8"", "GB18030//"TRANSLIT", $dom->saveXML($n) );
Lo que se ha mencionado anteriormente es la solución al problema de los caracteres chinos ilegibles al guardar xml con DOMDocument en PHP, espero que sea útil para todos. Si tienes alguna pregunta, déjame un mensaje y responderé a tiempo. También quiero agradecer mucho el apoyo a la página web de呐喊教程!