我的servlet代码如下:
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)
我该如何切换Servlet输出流的字符集?
write
可以,但用print
或println
就不行呢? - moeTiprint
函数将按照response
对象的characterEncoding
指定的格式对数据进行编码。如果您没有设置characterEncoding
头,则默认使用ISO-8859-1 https://github.com/eclipse/jetty.project/blob/jetty-9.4.x/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java#L902 - harshpatel991