MyByte: echo encoding/charset

Hallo!

Ich hab die letzte Stunde damit zugebracht, im Internet nach einer Möglichkeit zu suchen, php alle Strings per default in UTF-8 produzieren zu lassen. Zuletzt das hier gefunden:

http://developer.loftdigital.com/blog/php-utf-8-cheatsheet

Das bewirkt allerdings auch nicht den gewünschten Effekt. Die Inhalte, die ich per echo ausgebe, sind immer noch ISO 8859-Encoded. Gibt es eine Möglichkeit, php alles in UTF-8 ausgeben zu lassen? Jedes mal das ganze mit utf8_encode umzuwandeln ist leicht unelegant und frisst Rechenleistung...

Ich freu mich auf Antworten,
M.

  1. Hi,

    Ich hab die letzte Stunde damit zugebracht, im Internet nach einer Möglichkeit zu suchen, php alle Strings per default in UTF-8 produzieren zu lassen.

    die Mühe hättest du dir sparen können, denn es ist eigentlich ganz einfach: PHP gibt alle Strings *exakt so* aus, wie sie hereinkommen oder wie sie im Script-Quellcode stehen.
    Erster Schritt ist also, das Script selbst in UTF-8 zu speichern. Dann ergibt sich der Rest in weiten Teilen schon von allein. Nur die Schnittstellen, an denen dein Script Daten von außen bekommt (GET/POST-Parameter, Datenbank, Dateien), musst du dann noch beachten und entweder dafür sorgen, dass du die Daten an dieser Schnittstelle schon in UTF-8 bekommst, oder entsprechend umwandeln.

    Die Inhalte, die ich per echo ausgebe, sind immer noch ISO 8859-Encoded.

    Ja, wenn dein Script selbst in ISO codiert und gespeichert ist.

    So long,
     Martin

    --
    Time's an illusion. Lunchtime doubly so.
      (Douglas Adams, "The Hitchhiker's Guide To The Galaxy")
    1. Magst du mir auch verraten, wie ich eine Datei entsprechend speicher?

      Ja, wenn dein Script selbst in ISO codiert und gespeichert ist.

      1. Hi!

        Magst du mir auch verraten, wie ich eine Datei entsprechend speicher?

        Das muss der Prozess machen, der das tut. Im Allgemeinen bearbeitet man den Code mit einem Editor, also muss man diesen anweisen, beim Speichern eine bestimmte Kodierung zu verwenden. Beachte bei UTF-8, dass du ohne BOM speicherst.

        Lo!

  2. Hi!

    Ich hab die letzte Stunde damit zugebracht, im Internet nach einer Möglichkeit zu suchen, php alle Strings per default in UTF-8 produzieren zu lassen.

    PHP kann grundsätzlich noch nicht mit UTF-8 und anderen Multibyte-Kodierungen umgehen. Dieses "grundsätzlich" wird sich erst mit Version 6 aufgelöst haben. Derzeit gibt es nur vereinzelte Funktionen, die mit UTF-8 arbeiten oder spezielle Extensions, die sich dem Thema widmen. Die wichtigsten sind die Multibyte-String-Extension für die Stringverarbeitung und iconv (oder das ältere recode) zur Konvertierung von Kodierungen.

    Das bewirkt allerdings auch nicht den gewünschten Effekt. Die Inhalte, die ich per echo ausgebe, sind immer noch ISO 8859-Encoded. Gibt es eine Möglichkeit, php alles in UTF-8 ausgeben zu lassen? Jedes mal das ganze mit utf8_encode umzuwandeln ist leicht unelegant und frisst Rechenleistung...

    Wenn du keine Stringverarbeitung brauchst, kannst du Daten durchreichen, die bereits so kodiert sind, wie du sie brauchst. Das betrifft auch, wie von Der Martin erwähnt, im Script stehende Texte. Ansonsten kommst du ums Konvertieren nicht umhin.

    Lo!