form accept-charset="utf-8"
han
- sonstiges
0 wahsaga0 Daniel unreg2 Peter
Hallo,
vor kurzem bin ich auf accept-charset gestoßen und habe gedacht, nachdem meine Site in utf-8 geschrieben ist, dann schreib ich das mal zu meinen form-Elementen.
Aber brauche ich das überhaupt?
Ich dachte utf-8 ist so toll barrierefrei und der Zeichensazu enthält eh alle Zeichen?
Was passiert, wenn jemand nicht utf-8 eingeben würde und ich habe kein accept-charset angegeben?
Was passiert wenn ich accept-charset angegeben habe; werden die Eingaben einfach vershcluckt?
Was ist, wenn ein Browser keine Eingaben in utf-8 ermöglicht?
grüsssle
hi,
vor kurzem bin ich auf accept-charset gestoßen und habe gedacht, nachdem meine Site in utf-8 geschrieben ist, dann schreib ich das mal zu meinen form-Elementen.
Aber brauche ich das überhaupt?
Jein.
Aber es anzugeben ist besser.
Ich dachte utf-8 ist so toll barrierefrei und der Zeichensazu enthält eh alle Zeichen?
Was soll das mit Barrierefreiheit zu tun haben?
Was passiert, wenn jemand nicht utf-8 eingeben würde und ich habe kein accept-charset angegeben?
Dann könnte(!) ein Browser die Daten ggf. auch in einer anderen Kodierung verschicken. (Dürfte bei aktuellen Browsern aber nicht vorkommen, wenn dein Dokument als UTF-8 ausgeliefert wurde.)
Was passiert wenn ich accept-charset angegeben habe; werden die Eingaben einfach vershcluckt?
Nein, dann werden die Daten in UTF-8 kodiert verschickt.
Was ist, wenn ein Browser keine Eingaben in utf-8 ermöglicht?
Wer kein UTF-8 kann, wird dir kaum UTF-8 liefern können.
gruß,
wahsaga
Hallo,
Aber brauche ich das überhaupt?
Ich dachte utf-8 ist so toll barrierefrei und der Zeichensazu enthält eh alle Zeichen?
Problem ist nur, dass ein UTF-8 kodiertes Zeichen nicht mit einem ISO-8859-x kodiertem Zeichen identisch ist (in ISO-kodierungen hat jedes Zeichen ein Byte, in Unicode kann es auch mehr Byte groß sein). Das ist etwas kompliziert, muss dich aber nicht wirklich interessieren.
Mit dem Attribut kannst du festlegen, dass der Browser die Benutzereingaben auch tatsächlich UTF-8 kodiert absendet. Das wäre an sich auch bei einer ISO-kodierung notwendig.
Was passiert, wenn jemand nicht utf-8 eingeben würde und ich habe kein accept-charset angegeben?
Nicht-UTF-8 kodierte Zeichen einzugeben ist das geringere Problem. Wenn der Browser sich im UTF-8 "Modus" befindet, dann werden die Zeichen meist auch richtig kodiert.
Ist das nicht der Fall kannst du ISO-kodierte Zeichen erhalten, die bei dir als UTF-8 interpretiert werden und dadurch zu "Sonderzeichen" werden.
Was passiert wenn ich accept-charset angegeben habe; werden die Eingaben einfach vershcluckt?
Nein, die Zeichen werden dann Still und heimlich umkodiert. Das ist wie mit einem UTF-8 fähigem Texteditor. Du kannst sie in den UTF-8 Modus versetzen und wenn du ISO-kodierte Texte kopierst werden diese beim Einfügen umkodiert. Da geht nichts verloren. Mann muss nur immer darauf achten, dass alle beteiligten komponenten UTF-8 kennen.
Was ist, wenn ein Browser keine Eingaben in utf-8 ermöglicht?
Meine Güte, das sind schon sehr alte Browser, die von ihren Herstellern nicht mehr unterstützt werden. Alle aktuellen Browser unterstützen UTF-8.
Wer diese alten Browser verwendet hat halt Pech gehabt. Meines Erachtens werden mehr Benutzer durch schlechtes HTML ausgeschlossen als durch UTF-8-Inkompatibilität.
Gruß;
vor kurzem bin ich auf accept-charset gestoßen und habe gedacht, nachdem meine Site in utf-8 geschrieben ist, dann schreib ich das mal zu meinen form-Elementen.
Das tust du deshalb, damit kein existierender, evtl. älterer Browser auf dumme Gedanken kommt und dir irgendwas anderes schickt. Purer Selbstschutz, damit du sicherstellst, dass du UTF-8 kriegst.
Aber brauche ich das überhaupt?
Ich dachte utf-8 ist so toll barrierefrei und der Zeichensazu enthält eh alle Zeichen?
Das eine hat mit dem anderen nichts zu tun.
Was passiert, wenn jemand nicht utf-8 eingeben würde und ich habe kein accept-charset angegeben?
Niemand gibt "UTF-8" ein. Ein User drückt nur Tasten. Der Computer setzt die Tasten in Zeichencodes um. Das dürfte heutzutage in 99,999% der Fälle in Unicode passieren, d.h. der User kann alle Unicode-Zeichen eingeben (wenn nicht direkt per Taste, dann über irgendeine Tastenkombination, Angabe des Zeichencodes etc.).
Das bedeutet: In deinem Formularfeld landen Unicode-Zeichen. Und die muß der Browser dann an den Server schicken. Dazu muß er eine Codierung wählen.
Wenn deine HTML-Seite in ISO-8859-1 codiert ist und auch im accept-charset drinsteht, dann kann der Browser nur 256 aller vom User eingebbaren Zeichen codieren - der Rest fällt auf irgendeine Weise weg. Wenn hingegen UTF-8 angegeben ist, kann der Browser alle eingebbaren Zeichen zum Server schicken.
Was passiert wenn ich accept-charset angegeben habe; werden die Eingaben einfach vershcluckt?
Wenn du ein Encoding angibst, welches nicht alle Unicode-Zeichen codieren kann (UTF-8, UTF-16, UCS-2, UTF-32, UCS-4, UTF-7), dann fallen alle Zeichen, die nicht in dem Encoding drinstehen, weg.
Manche Browser machen ein Fragezeichen draus. Andere senden dir die numerische Zeichenreferenz. Noch andere schicken dir, obwohl du nur ISO-8859-1 erwartest, die Zeichen dennoch in UTF-8.
Egal, was passiert: Du kriegst ohne Unicode-fähiges Encoding in jedem Fall Müll, den du nicht mehr ohne menschliches Einwirken dekodieren kannst. Deshalb mußt du das unbedingt vermeiden. Die Browser haben derzeit leider noch keinen Mechanismus implementiert, der den Benutzer fragt, was mit seinen im Form-Encoding nicht darstellbaren Zeichen passieren soll - und selbst wenn das der Fall wäre, wüßte die Mehrheit der Benutzer mit der Frage nichts anzufangen. Also warum das Problem provozieren, wenn mit UTF-8 ein problemloser Ausweg bereitsteht?
Was ist, wenn ein Browser keine Eingaben in utf-8 ermöglicht?
Jeder Browser nimmt vom Betriebssystem Tastendrücke entgegen. Die sind in Unicode in einer passenden internen Codierung (aber nicht zwingend in UTF-8). Das heißt: Der Browser muß die Zeichen beim Abschicken sowieso in UTF-8 oder eine andere Codierung konvertieren.