2015-06-26 2 views
1

Когда я отправляю сообщение на свою страницу без setCharacterEncoding на серверной стороне, я получаю фыв. С setCharacterEncoding(UTF-8) я получаю ыва. Как исправить кодировку символов запроса POST?Как исправить кодировку изменения почтового запроса?

P.S .: Я прочитал данные из ServletInputStream.

Код ниже.

doPost 
req.setCharacterEncoding("UTF-8"); 
BufferedReader r = new BufferedReader(new InputStreamReader(req.getInputStream())); 
String line; 
while ((line = r.readLine()) != null) { 
    System.out.println(line); 
} 

ответ

1
BufferedReader r = new BufferedReader(
    new InputStreamReader(req.getInputStream(), StandardCharsets.UTF_8)); 

С getInputStream у вас есть двоичные данные без кодирования. Следовательно, двоично-текстовый мостовой класс InputStreamReader нуждается в правильной кодировке. В противном случае используется системная настройка по умолчанию System.getProperty("file.encoding").

+0

Это работает. Спасибо. Но если я прочитаю из потока напрямую? С помощью функции 'ServletInputStream.readLine'. – wtrclr

+0

Затем 'String line = new String (bytes, off, result, StandardardCharsets.UTF_8)'. –

Смежные вопросы