Sprachkompatibilität mit UTF-8

qsrs

Erfahrenes Mitglied
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:
<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.
 
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:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
auch noch
PHP:
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.
 
Also wenn es sich um HTML Ausgaben handelt dann empfiehlt es sich trotz utf8 die html entities zu nutzen.
Code:
&auml;
 
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.
 
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.
 
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:
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.
 
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.
 
Zurück