Hi, ich verschicke vom Client an den Server einen String der ein Pipe Zeichen enthält => ¦
Das Zeichen ist im Parameter myVar gespeichert.
Wenn ich Irgend¦Was¦ verschicke, dann erhalte ich am Server aus dem request Parmeter
Irgend%A6Was%A6.
String encoding = request.getCharacterEncoding(); liefert mir UTF-8.
String a = request.getParameter(“myVar”); liefert Irgend%A6Was%A6.
Wie kann ich die Variable a bearbieten damit ich Irgend¦Was¦ stehen habe?
allgemein gibt es URLDecoder.decode() wenn man wirklich umwandeln muss (es zu vermeiden durch evtl. korrektere Bedienung wäre noch andere Frage)
allerdings sollte es %C2%A6 für Pipe sein
experimentiere auch mit URLEncoder.encode(), da müsste aus Pipe %C2%A6 herauskommen,
wenn du das defensiv selber vor dem Absenden machst, dann kommt es bestimmt auch so beim Empfänger an, für sauberes Decode,
was ansonsten unterwegs passiert…
Richtung für manuellen Weg wäre die Vorgehensweise %-Zeichen suchen, zwei Ziffern danach hexadezimal parsen, int als char,
%A6 = 166 ist ja durchaus auch schon der richtige ASCII-Code für Pipe,
aber mit UTF8 oder sonstigen Charset ist immer noch bisschen mehr zu bedenken, Wertebereich ist groß,
korrekter kommen in der API-Methode die Zahlen als Bytes in ein byte[] und dann String-Konstruktor mit Charset
Die Clientseite verschickt z.B. den Text %Spezialzeichen¦%
Testweise verschicke ich dies normal, unescaped und escapded.
Habe nun verschiedene Wege ausprobiert um auf der Serverseite in einer Variable %Spezialzeichen¦% zu speichern.
Allerdings bekomme ich bestenfalls %25Spezialzeichen%A6%25.
**
Wie kann ich aus %25Spezialzeichen%A6%25 wieder %Spezialzeichen¦% machen?**
Clientseite
var o = "%Spezialzeichen¦%"
var data ="&normal=" + o + "&unescaped=" + unescape(o) + "&escaped=" + escape(o);