Votre sortie HTML doit être dans un seul encodage, il n'y a pas moyen de contourner cela. Cela signifie que le contenu dans différents encodages doit d'abord être converti dans votre encodage HTML. Bien que cela soit possible avec iconv
ou mb_convert_encoding
, vous devez résoudre deux problèmes :
- Vous devez connaître (ou deviner) l'encodage actuel du contenu
- Vous devez le faire manuellement, partout
Par exemple, une solution théorique serait de choisir UTF-8 comme encodage HTML, puis de le faire pour toutes les chaînes que vous allez générer :
$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;
Le code ci-dessus suppose que le contenu non-UTF-8 est encodé en latin-1, ce qui est raisonnable selon votre question.