Il tuo output HTML deve essere in un'unica codifica, non c'è modo di aggirarlo. Ciò significa che il contenuto con codifiche diverse deve prima essere convertito nella codifica HTML. Anche se è possibile farlo con iconv
o mb_convert_encoding
, ci sono due problemi che devi risolvere:
- Devi conoscere (o indovinare) la codifica corrente del contenuto
- Devi farlo manualmente, ovunque
Ad esempio, una soluzione teorica sarebbe quella di scegliere UTF-8 come codifica HTML e quindi eseguire questa operazione per tutte le stringhe che verranno emesse:
$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;
Il codice sopra presuppone che il contenuto non UTF-8 sia codificato in latino-1, il che è ragionevole in base alla tua domanda.