Thread Problem mit Zeichensatz bei Ajax Webseite (37 answers)
Opened by bianca at 2018-11-01 15:05

haj
 2018-11-02 12:25
#189089 #189089
User since
2015-01-07
527 articles
BenutzerIn

user image
2018-11-02T06:26:14 bianca
2018-11-01T15:53:28 haj
0xA0

Bist ein Schatz!! Vielen Dank!

Ich hatte an einer vorgeschalteten Stelle ein ~ s/\xA0/ /g stehen und mir dazu "Unicode   in Standard Blank umsetzen" notiert.
Jetzt weiß ich leider nicht mehr wofür das genau notwendig war. Dann muss ich mich jetzt wohl entscheiden, entweder das weg zu lassen oder davor schon das decoding von UTF-8 machen.

Puh! Das erklärt nun etwas, was mir bisher völlig schleierhaft war: Warum andere Umlaute bei Dir funktionieren und das à nicht. Andere Umlaute haben eben kein 0xA0-Byte... Und: ja, vorher das Decoding zu machen, ist das einzig richtige Vorgehen.

2018-11-02T06:26:14 bianca
Kann ich denn CPAN:CGI zuverlässig dazu befragen ob der Browser Ajax/UTF-8 oder ISO-8859-1x geschickt hat?

Wenn's aus dem gleichen Formular kommt: Nicht wirklich. Weder Firefox noch Chromium schicken beim Content-Type: application/x-www-form-urlencoded eine Charset-Deklaration mit, auch dann nicht, wenn das Formular explizit eine angefordert hat (accept-charset="UTF-8"). Und wenn's im Request nicht steht, dann kann CGI.pm das auch nicht rausholen. Die Browser halten sich aber an die accept-charset-Vorgabe, Du hast also zwei Möglichkeiten:
  • Das Formular um einen "hidden" Parameter erweitern, der per Default leer ist und in den Du per JavaScript vor dem AJAX-Call setzt oder
  • Im Formular accept-charset="UTF-8" verwenden, dann kommt auch übers Formular UTF-8 an.

Noch eine Empfehlung dazu: Ich verwende decode_utf8 nur mit Encode::FB_CROAK in einem eval-Block (oder besser einem entsprechenden try/catch-Mechanismus). Denn auch wenn Du annimmst, dass da UTF-8 kommt: jeder einfallsreiche Mensch kann jedweden Binärschrott bei Deiner URL abliefern, dazu braucht's nicht einmal ein Formular.
Last edited: 2018-11-02 12:26:28 +0100 (CET)

View full thread Problem mit Zeichensatz bei Ajax Webseite