首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何发送UTF8编码的ServletOutputStream字符

如何发送UTF8编码的ServletOutputStream字符
EN

Stack Overflow用户
提问于 2010-01-03 02:42:08
回答 6查看 61.7K关注 0票数 61

我的servlet代码如下所示:

代码语言:javascript
复制
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
ServletOutputStream out = response.getOutputStream();
out.println(...MY-UTF-8 CODE...);

..。

然后我得到了错误:

代码语言:javascript
复制
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输出流的字符集?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-01-03 02:45:59

我认为您应该使用getWriter()。它将接受一个字符串并对其进行编码,而输出流用于处理二进制数据。

从文档中:

返回一个可以向客户端发送字符文本的PrintWriter对象。使用的字符编码是在setContentType(java.lang.String)方法的charset=属性中指定的编码,必须在调用此方法之前调用该属性才能使字符集生效。

可以调用此方法或getOutputStream()来写入正文,但不能同时调用两者。

以下是代码的更改:

代码语言:javascript
复制
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.println(...MY-UTF-8 CODE...);
票数 123
EN

Stack Overflow用户

发布于 2014-02-02 06:54:37

这也是可行的:

代码语言:javascript
复制
ServletOutputStream out = response.getOutputStream();
out.write("MY-UTF-8 CODE".getBytes("UTF-8")); 
票数 11
EN

Stack Overflow用户

发布于 2013-11-09 02:59:54

同样的情况以前也发生在我身上,我试图在PrintWriter的顶端添加一行代码,结果是work。

response.setContentType("text/html;charset=GBK");

PrintWriter out = response.getWriter();

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1992400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档