dedlfix: Browser ignoriert Zeichensatz

Beitrag lesen

echo $begrüßung;

obwohl ich im HTML-Header den Zeichensatz ISO-8859-1 angebe, stellt der Browser immer auf UTF-8.
Diese Anweisung wird einfach ignoriert
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

Der Grund wurde ja schon erwähnt. Dies ist nur eine Ersatzangabe, wenn es keinen gleich benannten HTTP-Header gibt.

Es ist ganz wichtig, dass Formulardaten, die über die POST-Methode an den Server gesendet werden, mit den Umlauten öüä in die MySQL-Datenbank eingetragen werden, da diese auf latin1 eingestellt ist.

Es gibt seit Version 4.1 mehr als eine Stelle, an der eine Zeichenkodierung zum tragen kommt bzw. eingestellt werden kann. Wichtig sind die Kodierungen der einzelnen Felder und die Kodierung der Client-Verbindung. Leztere legt fest, wie die zu übertragenden Bytes zu interpretieren sind und wird über eine Funktion der Client-API (z.B. mysql_set_charset()) oder über das Statement SET NAMES mit dem Server ausgehandelt. Die Kodierungsangabe eines Feldes gibt implizit an, welche Zeichen darin gespeichert werden können. Zwischen Feld- und Verbindungskodierung nimmt MySQL selbständig Konvertierungen vor. Wenn ein Zeichen in der Zielkodierung nicht darstellbar ist, geht es verloren und es wird ein Ersatzzeichen eingefügt.

Wie kann ich sicherstellen, dass Formulardaten mit dem Zeichensatz ISO-8859-1 in die Datenbank gelangen?

Der Browser liefert die Daten im Allgemeinen in der Kodierung, in der die Formularseite vorlag. Der Client sollte mit dem MySQL-Server eine definierte Kodierung ausgehandelt haben.

echo "$verabschiedung $name";