-
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
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.HTML-Code:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
jaja die umlaute.... never ending story.
Evtl. hilft dir dieser Artikel: http://phpforum.de/forum/showthread.php?t=217877Google 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.
-
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
auch nochHTML-Code:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
einfügen.PHP-Code:header('Content-type: text/html; charset=utf-8');
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.
-
Also wenn es sich um HTML Ausgaben handelt dann empfiehlt es sich trotz utf8 die html entities zu nutzen.
Code :1
ä
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.
-
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.
-
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.
-
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.
-
01.11.09 22:30 #8
- 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.
-
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
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.PHP-Code:header('Content-type: text/html; charset=utf-8');
-
01.11.09 23:26 #10
- 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.
-
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.
-
@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.
-
01.11.09 23:45 #13
- 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.
-
@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.
-
02.11.09 08:43 #15
- 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.



1Danke

Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren