Naja eigentlich will ich nur Umlaute in Zeichen umwandeln, die in ASCII vorkommen und die ich später wieder zurückumwandeln kann.
Genau das passiert ja bei der Übertragung per HTTP. Da Umlaute nicht ASCII sind, werden die in Integer-Werte umgewandelt. Egal, ob das ein POST oder ein GET ist, bei einem GET jedoch kannst Du das in der URI sehen:
Nimm ein Formular (z.B. google), gib da einen Umlaut ein, drücke Enter und beobachte den URI der in der Adresszeile angezeigt wird.
Jetzt kommts darauf an, welche Codierung im Browser vor dem Submit eingestellt war, hattest Du ISO-8859-1 eingestellt, siehst Du nach dem Submit ein 'ä' als %E4 (dezimal 228 in der ISO-8859-1-Codepage).
Schickst Du ein russisches ф, kommt das als %26%231092%3B
Hast Du jedoch UTF-8 eingestellt (Default bei google), kommt das 'ä' als %C3%A4 (dezimal 195.164) in die URL.
ein russisches ф kommt nach einem Submit mit einem UTF-8 codierten Formular als %D1%84 in den URI.
All das macht der serverseitige Parser wieder rückgängig und der Server bekommt das richtige Zeichen.
Ich weiß nicht genau was dafür die beste Lösung ist...
Tja, wofür denn?
Hotti
Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.