Декодировать Inputsteam с кодировкой CP1252 в java

Входной поток, который я получаю из почтового запроса через ExtJS, имеет кодировку CP1252. Как мне декодировать Inputsteam, чтобы я мог использовать строку json и преобразовать ее в соответствующий Java-бин.

Я узнал кодировку, используя метод getEncoding() InputStreamReader.

ExtJs отправляет данные в следующем формате:

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

Нужно преобразовать его в:

[{"StartDate":"2011-03-23T00:00:00","EndDate":"2011-03-23T01:00:00","IsAllDay":false,"CalendarId":1,"Title":"saved"}]

person Varun Achar    schedule 23.03.2011    source источник


Ответы (1)


Это не кодировка символов в обычном смысле преобразования символов в байты. Это своего рода побег. Вероятно, экранирование URL. Посмотрите, есть ли java.net.URLDecoder помогает.

Метод InputStreamReader.getEncoding() только сообщает вам кодировку, которую считыватель использует для декодирования байтов из базового входного потока, и это указывается во время построения или устанавливается по умолчанию для платформы, если опущено. Это ничего не говорит вам о фактической кодировке символов в базовом потоке байтов.

person dty    schedule 23.03.2011
comment
спасибо за ответ .. я нашел обходной путь .. на самом деле метатег внутри моего JSP имел кодировку, установленную как CP1252 ... я изменил его на UTF-8, и мир снова прекрасен ... : D - person Varun Achar; 24.03.2011