Su salida HTML debe estar en una sola codificación, no hay forma de evitarlo. Esto significa que el contenido en diferentes codificaciones debe convertirse primero a su codificación HTML. Si bien eso es posible de hacer con iconv
o mb_convert_encoding
, hay dos problemas que tienes que resolver:
- Necesita saber (o adivinar) la codificación actual del contenido
- Debe hacer esto manualmente, en todas partes
Por ejemplo, una solución teórica sería elegir UTF-8 como su codificación HTML y luego hacer esto para todas las cadenas que va a generar:
$string = '...'; // from the database
// If it's not already UTF-8, convert to it
if (mb_detect_encoding($string, 'utf-8', true) === false) {
$string = mb_convert_encoding($string, 'utf-8', 'iso-8859-1');
}
echo $string;
El código anterior asume que el contenido que no es UTF-8 está codificado en latin-1, lo cual es razonable según su pregunta.