Sven Rautenberg: utf8_decode()

Beitrag lesen

Moin!

<?php
$string = "ÄÖÜ äöüß";
echo"$string - ";
$string2 = utf8_decode($string);
echo"$string2";
?>

gibt folgendes aus: ÄÖÜ äöüß - ????

Für das Ö sollte aber &#214; in $string2 stehen. Warum funktioniert das nicht?

Wenn dein PHP-Skript nicht UTF-8-codiert gespeichert wurde, steht in $string kein UTF-8-codierter String.

Und wenn das Skript so codiert wurde, steht hinterher in $string2 derselbe String, allerdings in ISO-8859-1 codiert.

Wenn du dann das Gemisch der beiden Codierungen hintereinander ausgibst, kann nur eine der beiden Codierungen korrekt sein - in diesem Fall $string. Das sagt allerdings noch nichts darüber aus, ob $string auch wirklich UTF-8 ist, und damit durch utf8_decode() dekodierbar.

Das, was du haben willst, ist aber eine numerische Zeichenreferenz in HTML - das produziert dir aber die Funktion utf8_decode() NICHT. Diese Funktion hat von HTML keinen Schimmer, auch nicht von irgendwelchen Entities oder numerischen Zeichenreferenzen.

- Sven Rautenberg

--
"Love your nation - respect the others."