Hallo,
aus irgendeinem Grunde werden Sonderzeichen bei der Übergabe per Javascript an ein PHP-Script verstümmelt. So wird z.B. das "ö" zu "ö"
(U+00C3 und U+00B6).
ö ist ein UTF-8-kodiertes ö, wenn es fälschlicherweise als ISO-8859-1 dekodiert wird.
Die Zeichen werden also nicht verstümmelt, sondern wahrscheinlich einfach nur mit UTF-8 kodiert - dein Script arbeitet aber wahrscheinlich mit ISO-8859-1.
Kann mir jemand sagen, wie das kommt? Habe vor der Übergabe des Strings per JS decodeURI(ö) gemacht und hinterher wieder encodeURI(ö). Trotzdem kommt das ö nicht korrekt an.
encodeURI und decodeURI nehmen eine UTF-8-Kodierung vor. encodeURI("ö") ergibt also "%C3%B6". Wenn du das an ein PHP-Script sendest, bekommst du einen UTF-8-kodierten String. Es gibt unterschiedliche Lösungen: Entweder du stellst auch dein Script auf UTF-8 um oder du nimmst serverseitig wieder eine Rekodierung nach ISO-8859-1 vor (utf8_decode). Was sinnvoller ist, lässt sich im Einzelfall entscheiden. (Was ich nicht machen würde, ist mit escape() zu arbeiten, um eine ISO-8859-1-Kodierung zu erzwingen.)
Mathias