echo $begrüßung;
Ich habe eine MySQL-Datenbank von der ich Texte auslese und mittels PHP ausgeben möchte. Problem: Umlaute!
Welche Version hat der MySQL-Server? Wenn größer oder gleich 4.1: Was ergibt die Abfrage SHOW VARIABLES LIKE 'character_set%'?
Welche Zeichenkodierung möchtest du verwenden, ISO8859-1 oder UTF-8?
Statt einem ü steht zum Beispiel ein A mit einer Tilde und ein 1/4 - Zeichen.
So sieht es aus, wenn man UTF-8-kodierte Daten als ISO-8859-1 interpretiert.
[...] der Befehl htmlentities() wandelt die Zeichen falsch um [...]
htmlentities() erwartet Strings, die nach ISO-8859-1 kodiert sind.
Das einzige was hilft ist, wenn ich im Firefox manuell auf Kodierung UTF-8 schalte, aber dies hilft nur solange, bis ich die Page neu ansurfe.
<meta http-equiv="content-type" content="text/plain; charset=ISO-8859-1"/>
Diese Meta-Angabe ist nur ein Ersatz für den Fall, dass der Server keine Angaben zu Inhalt (wieso eigentlich text/plain?) und Kodierung macht. (Die livehttpheaders-Extension für den Firefox zeigt beispielsweise an, was der Server sendet.)
Die charset-Angabe im HTTP-Header oder im Meta-Element gibt dem Empfänger an, in welcher Kodierung das Dokument vorliegt, damit er die ankommende Bytefolge richtig interpretieren kann. Wenn diese Angabe nicht mit der tatsächlichen Kodierung übereinstimmt, kann es zu Datenmüll kommen. (Und noch mehr Murks kommt raus, wenn die restliche Seite in Kodierung X gehalten ist, aber externe Daten in Kodierung Y einbindet.)
echo "$verabschiedung $name";