$string = file_get_contents('http://example.com');
if ('UTF-8' === mb_detect_encoding($string)) {
$dom = new DOMDocument();
// hack to preserve UTF-8 characters
$dom->loadHTML('<?xml encoding="UTF-8">' . $string);
$dom->preserveWhiteSpace = false;
$dom->encoding = 'UTF-8';
$body = $dom->getElementsByTagName('body');
echo htmlspecialchars($body->item(0)->nodeValue);
}
Esto cambia todos los caracteres UTF-8 a Å, ¾, ¤ y otros desperdicios. ¿Hay alguna otra manera de preservar los caracteres UTF-8?¿Por qué DOM cambia la codificación?
No publique las respuestas diciéndome que me asegure de que estoy produciendo como UTF-8, me aseguré de hacerlo.
Gracias de antemano :)
dónde viene los datos ('$ string') vienen? –
He actualizado mi pregunta :) –
¿Puede proporcionar un enlace a la URL que obtiene usando file_get_contents()? Como dije en la otra pregunta, sospecho que está obteniendo el ISO-8859-1 o algún otro dato, que * tiene * para distorsionarse cuando sale en UTF-8. No confiaría en mb_detect_encoding(). –