dedlfix: Cookie UTF-8, Sonderzeichen ??

Beitrag lesen

Hi!

a) Das alte Cookie ist ein ISO-8859-15-Zeichen, also beim Lesen musst du prüfen, ob es ein ISO-8859-15-er "&&&" oder ein utf-8-er "&&&". Das sind zwei Stringvergleiche.

Es ist kein UTF-8-kodiertes Cookie. Jedenfalls schrieb er nicht, dass er das betroffene Cookie auch mit PHP setzt und weder FF noch IE nehmen UTF-8 zum Schreiben von Cookie-Daten.

b) beim Schreiben setzt du nur das utf-8-er "&&&".

Das Schreiben soll mit Javascript erfolgen. Javascript bietet keine Möglichkeit, eine Zeichenkodierung anzugeben, die genommen werden soll. Wie ich herausfand, gehen Zeichen mit Unicode-Codepoints oberhalb 255 kaputt und wie Martin herausfand, ist die Lösung, eine URL-kodierung zu verwenden. Wenn man dazu encodeURIComponent() nimmt, sind alle Unicode-Zeichen verwendbar, weil diese durch encodeURIComponent() zuerst UTF-8- und anschließend URL-kodiert werden. PHP entfernt eine URL-Kodierung selbst, so dass in $_COOKIE schönes UTF-8 enthalten ist.

Lo!