как отправить через символы ServletOutputStream в кодировке UTF-8

Мой код сервлета похож на это:

response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
ServletOutputStream out = response.getOutputStream();
out.println(...MY-UTF-8 CODE...);

...

затем я получаю ошибку:

java.io.CharConversionException: Not an ISO 8859-1 character: ש
 javax.servlet.ServletOutputStream.print(ServletOutputStream.java:89)
 javax.servlet.ServletOutputStream.println(ServletOutputStream.java:242)
 rtm.servlets.CampaignLogicServlet.doPost(CampaignLogicServlet.java:68)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Как я могу переключить набор символов outputstream Сервлета???

50
задан Brian Agnew 9 December 2013 в 23:23
поделиться

1 ответ

Я думаю, что вы хотите использовать getWriter() вместо этого. Это позволит принять строку и закодировать ее, в то время как выходной поток предназначен для работы с данными binary.

Из документа doc:

Возвращает объект PrintWriter, который может отправить символьный текст клиенту. используется кодировка символов указанный в кодировке=свойство setContentType(java.lang.String) метод, который должен быть назван ранее вызывая этот метод, чтобы кодовая страница вступает в силу.

Либо этот метод, либо getOutputStream() может быть вызвана к пишите тело, а не и то, и другое.

Вот изменение кода:

response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.println(...MY-UTF-8 CODE...);
99
ответ дан 7 November 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: