Váš HTML výstup musí být v jediném kódování, to nelze nijak obejít. To znamená, že obsah v různých kódováních je třeba nejprve převést do vašeho kódování HTML. I když to lze udělat pomocí iconv
nebo mb_convert_encoding
, musíte vyřešit dva problémy:
- Musíte znát (nebo odhadnout) aktuální kódování obsahu
- Musíte to provést všude ručně
Teoretickým řešením by například bylo vybrat UTF-8 jako kódování HTML a pak to udělat pro všechny řetězce, které chcete vypsat:
$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;
Výše uvedený kód předpokládá, že obsah mimo UTF-8 je zakódován v latin-1, což je podle vaší otázky rozumné.