Ihre HTML-Ausgabe muss in einer einzigen Codierung vorliegen, daran führt kein Weg vorbei. Das bedeutet, dass Inhalte in anderen Kodierungen zuerst in Ihre HTML-Kodierung konvertiert werden müssen. Das ist zwar mit iconv
möglich oder mb_convert_encoding
, gibt es zwei Probleme, die Sie lösen müssen:
- Sie müssen die aktuelle Kodierung des Inhalts kennen (oder erraten)
- Sie müssen dies überall manuell tun
Eine theoretische Lösung wäre beispielsweise, UTF-8 als HTML-Kodierung auszuwählen und dies dann für alle Zeichenfolgen zu tun, die Sie ausgeben werden:
$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;
Der obige Code geht davon aus, dass Nicht-UTF-8-Inhalte in Latin-1 codiert sind, was Ihrer Frage nach angemessen ist.