JavaScript und die escape() Funktion

Note to self: escape() in JavaScript ist nur latin-1 tauglich - ein utf-8 String mit Sonderzeichen schickt diese als latin-1 Zeichen über die Leitung. Ziemlich dämlich wenn man mit Ajax ein Formular dengelt und dann daraus einen Wert an eine Funktion im Backend schickt und das eigentlich utf-8 erwartet. encodeURIComponent ist die Antwort, nicht escape.

tags: JavaScript, Programmierung

dustpuppy Aug. 24, 2005, 1:23 p.m.

Beim Client validieren macht man sowieso nicht ;)

hugo Aug. 25, 2005, 12:08 a.m.

Watt hat das mit validieren zu tun? escape (oder encodeURIComponent) ist eine notwendige Kodierung um Inhalte überhaupt über HTTP POST zu übertragen - damit die Gegenseite Parameter auseinandernehmen kann. Das Problem ist halt einfach nur das escape() immer latin1 Codierungen erzeugt, was ziemlich dämlich ist, wenn die Formulare utf8 Codierungen erwarten ...

Kai Aug. 25, 2005, 9:52 p.m.

gibts auch ne loesung zum entsprechenden decodieren (z.b. von referrern), wenn man nicht weiss was es ist? unescape() kann nur latin-1 und decodeURIcomponent() nur utf8 .. gefuettert mit dem jeweils anderen versagen sie ;)

hugo Aug. 25, 2005, 10:01 p.m.

Nicht das ich wüsste. Vor allem ist es mit JavaScript schweineschwer zu erkennen ob ein String jetzt utf-8 oder latin-1 ist. Bei Python würde ich einfach eine utf-8 Dekodierung versuchen und wenn ich eine Exception kriege das als latin-1 betrachten. Mit JavaScript gibts die einfache Möglichkeit leider nicht ...