Decodifica inputSteam con codifica CP1252 in Java
Domanda
L'Inputstream che ricevo da una richiesta post tramite EXTJS è nella codifica CP1252. Come faccio a decodificare l'ingresso in modo da poter usare la stringa JSON e convertirla nel fagiolo Java appropriato.
Ho scoperto la codifica utilizzando il metodo GetCoding () di InputStreamReader.
EXTJS invia i dati nel seguente formato:
recordsToSend=%5B%7B%22StartDate%22%3A%222011-03-23T00%3A00%3A00%22%2C%22EndDate%22%3A%222011-03-23T01%3A00%3A00%22%2C%22IsAllDay%22%3Afalse%2C%22CalendarId%22%3A1%2C%22Title%22%3A%22saved%22%7D%5D
Bisogno di convertirlo in:
[{"StartDate":"2011-03-23T00:00:00","EndDate":"2011-03-23T01:00:00","IsAllDay":false,"CalendarId":1,"Title":"saved"}]
Soluzione
Questo non è un personaggio che codifica nel normale senso dei caratteri. È una qualche forma di fuga. Probabilmente URL che fugge. Vedi se java.net.urldecoder Aiuta.
Il metodo inputStreamReader.getCoding () indica solo che la codifica che il lettore sta usando per decodificare i byte dal flusso di input sottostante e questo è specificato a tempo di costruzione o impostato sulla piattaforma predefinita se omesso. Non ti dice nulla sulla codifica effettiva dei personaggi nel flusso di byte sottostante.