Servlet响应的中文字符集问题

在Servlet中利用response向客户端浏览器输出中文时有时会遇到乱码问题,总结如下:

response输出流有两种,一是以字节流输出,一是以字符流输出。

 一、以字节流输出:  1.默认编码输出木有乱码  2.通过response的setHeader方法设置编码utf-8,无乱码  3.通过response的setContentType方法设置编码utf-8,无乱码  4.输出数字建议以字符串形式输出

 二、以字符流输出:  1.默认查iso-8859-1码表(SUN的Servlet规范要求的) ,客户端显示乱码  2.通过response的setHeader方法设置编码utf-8,无乱码  3.通过response的setContentType方法设置编码utf-8,无乱码

字节流以默认编码输出:

 1 public void doGet(HttpServletRequest request, HttpServletResponse response)
 2             throws ServletException, IOException {
 3         // 以字节流用默认编码向客户端输出中文数据,木有乱码
 4         response.setContentType("text/html");
 5 
 6         String str = "喔呵呵呵呵";
 7         OutputStream out = response.getOutputStream();
 8         out.write("</br></br><div align=\"center\" style=\"font-size:25px; color:red\">".getBytes());
 9 
10         out.write(str.getBytes());
11 
12         out.write("</div>".getBytes());
13         out.close();
14 }

字节流设置编码为utf-8输出:

 1 public void doGet(HttpServletRequest request, HttpServletResponse response)
 2             throws ServletException, IOException {
 3 
 4         // 通知客户端查UTF-8码表
 5         response.setContentType("text/html;charset=utf-8");
 6 
 7         // 或者:
 8         // response.setHeader("Content-Type","text/html;charset=utf-8");
 9 
10         String str = "喔哈哈哈哈";
11         OutputStream out = response.getOutputStream();
12         out.write("</br></br><div align=\"center\" style=\"font-size:25px; color:red\">".getBytes());
13 
14         out.write(str.getBytes("utf-8"));
15 
16         out.write("</div>".getBytes());
17         out.close();
18 }

字节流输出数字:

 1 public void doGet(HttpServletRequest request, HttpServletResponse response)
 2             throws ServletException, IOException {
 3         response.setHeader("Content-Type", "text/html;charset=utf-8");
 4 
 5         int i = 98;
 6         OutputStream out = response.getOutputStream();
 7 
 8         out.write("</br></br><div align=\"center\" style=\"font-size:25px; color:red\">"
 9                 .getBytes());
10 
11         // out.write(i); 会输出字母b
12 
13         // 输出数字98
14         out.write((i + "").getBytes());
15 
16         out.write("</div>".getBytes());
17         out.close();
18 }

字符流设置编码为utf-8输出:

 1 public void doGet(HttpServletRequest request, HttpServletResponse response)
 2             throws ServletException, IOException {
 3         // 通知客户端查UTF-8码表
 4         response.setContentType("text/html;charset=utf-8");
 5         // 或者:
 6         // response.setHeader("Content-Type", "text/html;charset=utf-8");
 7 
 8         String str = "喔嘿嘿嘿嘿";
 9         PrintWriter out = response.getWriter();
10         out.write("</br></br><div align=\"center\" style=\"font-size:25px; color:red\">");
11 
12         out.write(str);
13 
14         out.write("</div>");
15         out.flush();
16         out.close();
17 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jack-Cui

第六天、打渔晒网问题

    如果一个渔夫从2011年1月1日开始每三天打一次渔,两天晒一次网,编程实现当输入2011年1月1日以后的任意一天,输出该渔夫是在打渔还是在晒网。 C...

25000
来自专栏xingoo, 一个梦想做发明家的程序员

JQuery ztree 异步加载实践

本来要做一个文件目录浏览界面,需要遍历所有的文件和目录,很显然一次性读取时很费时费力的一件事情。 因此就需要做异步加载.... 不过网上的几篇帖子还挺坑的...

32670
来自专栏闻道于事

JavaWeb(三)servlet

Servlet * 什么是Servlet 是运行在web服务器端的Java应用程序,它使用JAVA语言编写,具有Java语言的优点。与Java程序的区别:Ser...

39990
来自专栏lgp20151222

熟悉servlet的页面跳转

20930
来自专栏用户画像

JAVA 枚举 String-int

7620
来自专栏黑泽君的专栏

Servlet学习小结

12410
来自专栏java初学

j2ee—框架(2):Servlet+JSP实现基本的登录功能(v2.0)

422130
来自专栏个人分享

Redis部分数据结构方法小结

Redis在工程开发中还是比较常用的Nosql内存数据库,简单巩固一下它的各种数据类型与用法~

14930
来自专栏Java3y

过滤器第二篇【编码、敏感词、压缩、转义过滤器】

前言 在上篇博文中,我们已经讲解了过滤器的基本概念,使用以及简单的Servlet应用了。这篇博文主要讲解过滤器的高级应用。。 编码过滤器 目的:解决全站的乱码问...

55560
来自专栏Ryan Miao

在springmvc中配置jedis:

主要学习https://github.com/thinkgem/jeesite。一下代码均参考于此并稍作修改。 1.jedis 首先,需要添加jedis: <!...

41660

扫码关注云+社区

领取腾讯云代金券