Rainer: utf8_decode()

Hallo,

<?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?

Gruß Rainer

  1. 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."
    1. @@Sven Rautenberg:

      Das, was du haben willst, ist aber eine numerische Zeichenreferenz in HTML

      Warum sollte man das wollen?

      „Es ist fast immer besser, eine Zeichencodierung zu benutzen, die es erlaubt, die Zeichen in ihrer normalen Form zu verwenden, anstatt Zeichen-Entity-Referenzen oder numerische Zeichenreferenzen zu verwenden.“ [QA-ESCAPES]

      Live long and prosper,
      Gunnar

      --
      Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.