Sua saída HTML precisa estar em uma única codificação, não há como contornar isso. Isso significa que o conteúdo em diferentes codificações precisa ser convertido primeiro para sua codificação HTML. Embora isso seja possível com
iconv
ou mb_convert_encoding
, há dois problemas que você precisa resolver:- Você precisa saber (ou adivinhar) a codificação atual do conteúdo
- Você precisa fazer isso manualmente, em qualquer lugar
Por exemplo, uma solução teórica seria escolher UTF-8 como sua codificação HTML e, em seguida, fazer isso para todas as strings que você produzirá:
$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;
O código acima assume que o conteúdo não UTF-8 é codificado em latin-1, o que é razoável de acordo com sua pergunta.