Axel Richter: Sonderzeichen in einem Formular

Beitrag lesen

Hallo,

Verstehe ich das richtig: wenn im Formular gar keine accept-charset-Angabe steht (wie es bei mir der Fall war), dann akzeptiert es alle Zeichen

Zunächst kann man in ein Formular alle Zeichen eingeben, die man über die Tastatur erzeugen kann. Ob die dann dort (clientseitig) auch angezeigt werden, hängt davon ab, ob der Browser das kann.

  • und nach welchem charset sind diese dann kodiert? Nach dem charset, der im Seiten-Header steht (in meinem Fall stand iso-8859-1)?

Ja. Zumindest der IE akzeptiert dort auch keinen Unterschied. Du kannst also das Formular nicht anders codieren als das Dokument.

Bleiben wir bei charset=ISO-8859-1:

Solche Zeichen, die nicht US-ASCII sind, aber im charset werden URL-codiert. Bsp.: ü = %FC. Die Serverseite macht daraus dann wieder ISO-8859-1, also ü.

Zeichen, die nicht in ISO-8859-1 enthalten sind, werden URL-codiert als Entity gesendet. Bsp.: ś = %26%23347%3B. Die Serverseite macht daraus die _6_ Zeichen & # 3 4 7 ;. HTML erkennt das natürlich als Entity.

Mit charset="UTF-8" sendet der Browser Unicode UTF-8 codiert.
Bsp.: ü = %C3%BC
          11000011 10111100
          110xxxxx 10xxxxxx
             00011   111100
             %FC

und ś = %C5%9B
        11000101 10011011
        110xxxxx 10xxxxxx
             101   011011
             %15B
             347
http://www.ietf.org/rfc/rfc3629.txt

Wie Du siehst hat UTF-8 unicode Ähnlichkeiten mit URL-Encoding, darf aber nicht als solches decodiert werden.

Wo ist es denn überall notwendig, um die Seite "international" zu machen, als charset UTF-8 anzugeben?
-Im Seitenheader

Ja.

-Im Formular (ist das wirklich erforderlich?)

Jain ;-)

-Im PHP-Email-Header
-Datenbank ???

Es muss jedenfalls dort überall als UTF-8 betrachtet werden.

Serverseitig wirst Du nicht einfach einen charset-Eintrag setzen können. Die eingesetzte Sofware muss mit UTF-8 umgehen können. Hierfür einfach ins Manual von PHP, MySQL &Co schauen.

viele Grüße

Axel