Twój wynik HTML musi być w jednym kodowaniu, nie ma sposobu na obejście tego. Oznacza to, że zawartość w różnych kodowaniach musi być najpierw przekonwertowana na Twoje kodowanie HTML. Chociaż można to zrobić za pomocą iconv
lub mb_convert_encoding
, musisz rozwiązać dwa problemy:
- Musisz znać (lub odgadnąć) aktualne kodowanie treści
- Musisz to zrobić ręcznie, wszędzie
Na przykład, teoretyczne rozwiązanie polegałoby na wybraniu UTF-8 jako kodowaniu HTML, a następnie zrobieniu tego dla wszystkich ciągów, które zamierzasz wyprowadzić:
$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;
Powyższy kod zakłada, że zawartość nie-UTF-8 jest zakodowana w latin-1, co jest uzasadnione w zależności od Twojego pytania.