Thomas: Browser ignoriert Zeichensatz

Hallo,
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">

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.

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

Gruß,
Thomas

  1. Hallo,

    obwohl ich im HTML-Header den Zeichensatz ISO-8859-1 angebe, stellt der Browser immer auf UTF-8.
    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.

    Und mit UTF-8 werden ä, ö, ü anders dargestellt bzw. kodiert?
    Dann stimmt da etwas nicht. Und welchen Browser benutzt du eigentlich?

    Grüße, Matze

    1. Hallo,

      obwohl ich im HTML-Header den Zeichensatz ISO-8859-1 angebe, stellt der Browser immer auf UTF-8.
      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.

      Und mit UTF-8 werden ä, ö, ü anders dargestellt bzw. kodiert?
      Dann stimmt da etwas nicht. Und welchen Browser benutzt du eigentlich?

      Grüße, Matze

      Ja, ich habe dann seltsame Zeichen in der Datenbank, die ich nicht verarbeiten kann. Ich verwende den Firefox, aber der IE verhält sich genauso. Nur wenn ich den Browser vor dem Absenden des Formulars wieder auf ISO-8859-1 umstelle, sind die Umlaute richtig in der DB.

      Gruß,
      Thomas

      1. Hallo,

        Ja, ich habe dann seltsame Zeichen in der Datenbank, die ich nicht verarbeiten kann. Ich verwende den Firefox, aber der IE verhält sich genauso. Nur wenn ich den Browser vor dem Absenden des Formulars wieder auf ISO-8859-1 umstelle, sind die Umlaute richtig in der DB.

        so, und was heißt jetzt "seltsame Zeichen"? Kornkreise?
        Die Antwort auf deine Frage gab dir vermutlich schon ChrisB.

        Grüße, Matze

  2. Hi,

    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">

    Eine Angabe im "Content-Type" HTTP Response Header hat bekanntlich hoehere Prioritaet.
    Liefert dein Server eine - und wenn, welche? (http://web-sniffer.net/, Browser-Information, -AddOn befragen)

    MfG ChrisB

  3. Hallo Thomas,

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

    Hast du schon http://de.selfhtml.org/html/formulare/definieren.htm#zeichenkodierung ausprobiert?

    Grüße, Jochen

    --
    Kritzeln statt texten:
    Scribbleboard
  4. 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";