peter korn: von iso-8859-1 zu utf-8 wechseln

hallo,

ich will von iso-8859-1 zu utf-8 wechsel (webprojekt)...

was muss ich da jetzt konkret tun? mysql läuft bereits mit utf-8 und latin-1 für die tabellen.

php sendet jetzt einen utf-8-header aus und in den meta-tags steht es auch nochmal.

muss ich jetzt noch irgendwas umwandeln? die .php-dateien nur im utf-8-format abspeichern oder wie? alle gängigen sonderzeichen sind da aber eh schon maskiert.

danke,
peter

  1. Hello,

    ich will von iso-8859-1 zu utf-8 wechsel (webprojekt)...
    was muss ich da jetzt konkret tun? mysql läuft bereits mit utf-8 und latin-1 für die tabellen.

    1. Auf jeden Fall alle Stringfunktionen in allen Scripten auf die Multibytefunktionen
       umstellen, http://de2.php.net/manual/de/ref.mbstring.php

    2. Dann alle externen Files, die eventuell noch existieren und dazugeladen werden, konvertieren.

    3. Die Scriptfiles konvertieren (einfach in den Editor laden mit iso und mit utf-8 wieder
       abspeichern.

    4. In Metaheadern die Änderungen vornehmen

    Mehr fällt mir im Moment nicht ein.

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  2. ich will von iso-8859-1 zu utf-8 wechsel (webprojekt)...

    was muss ich da jetzt konkret tun? mysql läuft bereits mit utf-8 und latin-1 für die tabellen.

    Wichtig ist, dass für die Verbindung die richtige Kodierung gewählt wird. Nachzulesen ist das im Kapitel 10.4 der MySQL-Anleitung. Die Tabelle kann utf-8 sein, es hilft nichts, wenn für die Datenbankverbindung iso-8859-1 benutzt wird.

    muss ich jetzt noch irgendwas umwandeln? die .php-dateien nur im utf-8-format abspeichern oder wie? alle gängigen sonderzeichen sind da aber eh schon maskiert.

    Wenn du nirgends unmaskierte Zeichen jenseits US-ASCII hast, kannst du dir das Umwandeln der Quelltexte sparen. Andersrum kannst du dir aber auch die Maskierungen sparen, wenn du dem Browser nur die richtige Kodierung mitteilst.

    Beachten solltest du weiterhin, dass die PHP-Funktion htmlentities() standardmäßig annimmt, Zeichenketten wären iso-8859-1-kodiert. Verwendest du diese Funktion, musst du entweder dafür Sorge tragen, dass sie im dritten Parameter den Hinweis auf utf-8 übergeben bekommt, oder du tauscht die Funktion gegen htmlspecialchars() aus.
    htmlentities() hat keinen sonderlichen Vorteil gegenüber htmlspecialchars(), solange dem Browser die Kodierung mitgeteilt wird.

  3. @@peter korn:

    die .php-dateien nur im utf-8-format abspeichern oder wie? alle gängigen sonderzeichen sind da aber eh schon maskiert.

    Das ist nicht zu empfehlen. „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. Die Verwendung von Escapes macht den Quelltext schlechter lesbar und schwerer zu pflegen und kann auch die Dateigröße beträchtlich erhöhen.“ [QA-ESCAPES]

    Es wäre aber auch unsinnig, dies bei bestehenden Dokumenten zu ändern. Bei neuen sollten dann aber die richtigen Zeichen im Quelltext stehen.

    Vielleicht wirfst du einen Blick in [QA-CHANGING-ENCODING] und die dort verlinkten Artikel.

    Live long and prosper,
    Gunnar

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