hotti: Zeichencode in Zeichen konvertieren / Sonderzeichen in Form

Beitrag lesen

hi,

Wenn ich encodeURIComponent verwende, habe ich das gleiche Problem, wie mit meinem Verschlüsselungsumweg encode2(). Also z.B. wird aus einem ä ein ä.

Daher: Aus welchem Grund ist escape() falsch?

escape() ist nicht falsch, schau Dir mal an was es macht, das kannst Du in der Browser-Adresszeile schon testen:

javascript:alert(escape('ä'))
javascript:alert(encodeURI('ä'))

Du siehst in der Ausgabe Folgendes:
escape    => %E4
encodeURI => %C3%4

Aus diesen Escape-Sequenzen entstehen serverseitig Bitfolgen, die Bitfolge, die in hex E4 enstspricht ist ein 'ä' wenn es ISO-8859-1 codiert ist. Die Bitfolge C3A4 (2 byte, 16 Bit) entspricht auch einem 'ä' das jedoch UTF-8 codiert ist. E4 ist gleichzeitig auch der Codepoint für das 'ä' im Unicode-System.

Deine Datei, die serverseitig geschrieben wird, enthält wiederum bytes, je nachdem, wie Du die dem Request mitgibst, sind das für ein 'ä' in ISO 1 byte (escape), in utf8 hingegen 2 byte (encodeURI).

Gute Nacht,
Horst Hausmann