tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
21
ZUGRIFFE
434
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    454
    Hallo,

    ich habe ein mehrsprachiges PHP-Skript, das jetzt in UTF-8 geändert werden soll. Die Sprachdateien enthalten Variablen mit den Texten, die wiederum in anderen Dateien mit echo ausgegeben werden. Hier werdern Umlaute jetzt aber falsch dargestellt, wenn im Header
    HTML-Code:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    steht. Wenn ich in den Quelltext Umlaute schreibe, wird es allerdings richtig angezeigt. Wie sollte ich vorgehen, dass es auch mit den Sprachdateien klappt, deren Inhalte mit echo ausgegeben werden? Und wie verhält sich das mit anderen Sprachen, also nicht nur der Deutschen.
     

  2. #2
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    jaja die umlaute.... never ending story.
    Evtl. hilft dir dieser Artikel: http://phpforum.de/forum/showthread.php?t=217877
    qsrs bedankt sich. 
    Google und die Forensuche beantworten 50% aller Fragen!
    Pflichtlektüre: Das PHP Handbuch als Windows Help Datei

    Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
    [PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]

    Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.

  3. #3
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    454
    Hallo,

    vielen Dank für den Link, bin damit weitergekommen. Da mein Server eine andere Kodierung hat, als ich sie in den Dokumenten verwende, musste ich außer

    HTML-Code:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    auch noch
    PHP-Code:
    header('Content-type: text/html; charset=utf-8'); 
    einfügen.

    Die Dateien z.B. mit Notepad in UTF-8 zu konvertieren empfiehlt sich nicht. Wenn der Server eine andere Kodierung hat, wird bei PHP-includes und anders kodierten Zeichen dann immer  ausgegeben.
     

  4. #4
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    Also wenn es sich um HTML Ausgaben handelt dann empfiehlt es sich trotz utf8 die html entities zu nutzen.
    Code :
    1
    
    &auml;
     
    Google und die Forensuche beantworten 50% aller Fragen!
    Pflichtlektüre: Das PHP Handbuch als Windows Help Datei

    Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
    [PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]

    Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.

  5. #5
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    454
    Ja, das dachte ich eigentlich auch. In Dreamweaver werden Umlaute in Dokumenten, die mit UTF-8 kodiert sind, auch direkt so in den Quelltext geschrieben, also nicht mehr maskiert.
     

  6. #6
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    Zitat Zitat von qsrs Beitrag anzeigen
    Ja, das dachte ich eigentlich auch. In Dreamweaver werden Umlaute in Dokumenten, die mit UTF-8 kodiert sind, auch direkt so in den Quelltext geschrieben, also nicht mehr maskiert.
    gibt es sicher eine möglichkeit in den einstellungen das anpassen....
     
    Google und die Forensuche beantworten 50% aller Fragen!
    Pflichtlektüre: Das PHP Handbuch als Windows Help Datei

    Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
    [PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]

    Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.

  7. #7
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    454
    Ja, das geht. Unter Bearbeiten > Voreinstellungen > Neues Dokument > Standardkodierung - für alle, die den Beitrag mal lesen und das brauchen. Dann wird in den Header des neuen Dokuments entsprechendes geschrieben, dann ist es aber eben nicht mehr UTF-kodiert. Ich denke bei UTF ist das unkodiert im Quelltext genau so gewollt, denn das soll ja eine globale Zeichenkodierung möglich machen, wobei ich gelesen habe, dass z.B. in PHP volle UTF-8 Unterstützung erst ab der Version 6 zur Verfügung steht.
     

  8. #8
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.960
    Unter PHP gibt es doch die Funktionen utf8_encode() und utf8_decode(). Außerdem muss man bei Daten, welche man aus einer MySQL-Datenbank lädt, darauf achten, dass diese auch als UTF8 kodiert wurden.
     
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  9. #9
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    454
    Also was die Sprachdateien angeht (etwas über 1000 Variablen pro Sprache), ist es fast unmöglich, das alles noch mit utf8_encode() zu kodieren. Ich schreibe stattdessen
    PHP-Code:
    header('Content-type: text/html; charset=utf-8'); 
    und erzwinge die Kodierung somit mittels PHP sowohl für den Html- und den PHP-Code. Somit werden auch Daten, die aus einer MySQL-DB geholt werden und für die Ausgabe bestimmt sind, mit kodiert.
     

  10. #10
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.960
    an qsrs: Soweit die Theorie und nun die Praxis: für Daten aus einer MySQL-Datenbank, welche nicht als UTF8 gespeichert wurden, muss man der Datenbankverbindung noch sagen, dass man sie als UTF8 haben möchte, da sonst PHP diese Daten nicht als UTF8 ausgeben kann.
     
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  11. #11
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    wenn man es sauber implementiert sollte es nicht notwendig sein utf8-en/decode zu verwenden da das auch nicht unabhängig macht....
     
    Google und die Forensuche beantworten 50% aller Fragen!
    Pflichtlektüre: Das PHP Handbuch als Windows Help Datei

    Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
    [PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]

    Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.

  12. #12
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    454
    @einfach nur crack
    Hab das gerade getestet. Habe MySQL-Daten nicht UTF-kodiert aus einer Tabelle geholt und mittels PHP ausgegeben. Umlaute, Sonderzeichen etc. werden korrekt ausgegeben.
     

  13. #13
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.960
    an qsrs: Eigenartig. Ich hatte immer Probleme, wenn ich der MySQL-Verbindung nicht gesagt habe, dass die Daten als UTF8 übergeben werden sollen.
     
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  14. #14
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    454
    @einfach nur crack
    Habe gerade an einem anderen Beispiel gemerkt, dass du Recht hast. Wahrscheinlich war es nur Zufall, dass es beim ersten Mal funktioniert hatte. Danach habe ich mich durch diverse Beiträge gelesen, wie ich auch die MySQL-Einträge auf UTF-8 umstelle. Da es um ein bestehendes Projekt geht, schätze ich den Aufwand nicht gering ein.

    Kannst du mir eine kurze Übersicht geben, wie du das machst bzw. auf was es ankommt? Im Moment weiß ich es nur ungefähr:

    - MySQL-Verbindung mit mysql_query("SET NAMES 'utf8'");
    - Felder müssen (?) alle in UTF-8 kodiert werden (werden Inhalte beim Umstellen automatisch umkodiert?
    - Die Daten müssen mit PHP alle per utf8_encode() und utf8_decode() geschrieben/gelesen werden?

    Der Auwand ist so hoch, dass ich mir überlege bei ISO zu bleiben.
     

  15. #15
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.960
    Das ist recht einfach: direkt nach dem Aufbau der Verbindung zur MySQL-Datenbank SET NAMES 'utf8' senden und schon geht das. Ansonsten kann man noch für alle Felder der Tabellen die Kodierung auf UTF8 setzen. Mehr ist es nicht.
     
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.