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,无乱码
字节流以默认编码输出:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 以字节流用默认编码向客户端输出中文数据,木有乱码
response.setContentType("text/html"); String str = "喔呵呵呵呵";
OutputStream out = response.getOutputStream();
out.write("</br></br><div align=\"center\" style=\"font-size:25px; color:red\">".getBytes()); out.write(str.getBytes()); out.write("</div>".getBytes());
out.close();
}
字节流设置编码为utf-8输出:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { // 通知客户端查UTF-8码表
response.setContentType("text/html;charset=utf-8"); // 或者:
// response.setHeader("Content-Type","text/html;charset=utf-8"); String str = "喔哈哈哈哈";
OutputStream out = response.getOutputStream();
out.write("</br></br><div align=\"center\" style=\"font-size:25px; color:red\">".getBytes()); out.write(str.getBytes("utf-8")); out.write("</div>".getBytes());
out.close();
}
字节流输出数字:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Content-Type", "text/html;charset=utf-8"); int i = 98;
OutputStream out = response.getOutputStream(); out.write("</br></br><div align=\"center\" style=\"font-size:25px; color:red\">"
.getBytes()); // out.write(i); 会输出字母b // 输出数字98
out.write((i + "").getBytes()); out.write("</div>".getBytes());
out.close();
}
字符流设置编码为utf-8输出:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 通知客户端查UTF-8码表
response.setContentType("text/html;charset=utf-8");
// 或者:
// response.setHeader("Content-Type", "text/html;charset=utf-8"); String str = "喔嘿嘿嘿嘿";
PrintWriter out = response.getWriter();
out.write("</br></br><div align=\"center\" style=\"font-size:25px; color:red\">"); out.write(str); out.write("</div>");
out.flush();
out.close();
}
Servlet响应的中文字符集问题的更多相关文章
- Java中关于Servlet中请求中文乱码及文件下载
1,Servlet请求响应中文乱码问题 package com.demo.servlet; import java.io.PrintWriter; import java.io.IOException ...
- 解决servlet响应乱码问题
当我们使用servlet响应中文时,浏览器接收的内容就会乱码显示出来,原因是响应数据时使用的是utt-8编码,而浏览器解析响应用的的编码却不是utf-8,这样就会造成乱码. 解决办法: respons ...
- 使linux服务器默认使用中文字符集zh_CN.UTF-8
一.问题描述和相关概念 linux服务器的字符集设置可能影响到网站页面出现 “???” 等问号乱码,还有可能导致文件中的汉字部分出现乱码. locales设置:语言设置选项 linux真的是一个非 ...
- Ubuntu下设置中文字符集支持(解决中文乱码问题)
一. Ubuntu默认的中文字符编码 Ubuntu默认的中文字符编码为zh_CN.UTF-8,这个可以在/etc/environment中看到: sudo gedit /etc/environment ...
- 各种编码中汉字所占字节数;中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
vim settings set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936,latin1set termencoding=utf-8se ...
- 中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030 内容详见: http://www.360doc.com/content/11/1004/12/6139921_1 ...
- 用Delphi的TIdHttp控件发起POST请求和Java的Servlet响应
http://blog.csdn.net/panjunbiao/article/details/8615880 用Delphi的TIdHttp控件发起POST请求和Java的Servlet响应
- 中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030 cp936是微软自己发布的用在文件系统中的编码方式.而bg2312是中国国家标准.我明白mount -t vfa ...
- 解决 Docker Image的UTF-8中文字符集的问题(以Oracle为例)
最近因业务需要,需要搭建一个Oracle数据库,当然Oracle数据库支持Linux,但是在上面搭建很是复杂,所以我想起了Docker ,果然在上面发现了一个OracleDB的镜像,所以下载之,运行, ...
随机推荐
- phpcms v9调用多个栏目下文章的方法
示例:{pc:get sql="SELECT * from v9_news where status=99 and catid in(6,7,8) order by id DESC" ...
- PAT之我要通过
题目描述 “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输 出“答案正确”,否则输出“答案错误”. 得到“答案正确”的 ...
- PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
网上的很多模拟登录程序,大都是通过服务程序apache之类的运行,获取到验证码之后显示在网页上,然后填上再POST出去,这样虽然看起来很友 好,但是既然模拟登录,登录后所干的事情就不一定是短时间完成的 ...
- 【读书笔记《Android游戏编程之从零开始》】11.游戏开发基础(SurfaceView 游戏框架、View 和 SurfaceView 的区别)
1. SurfaceView 游戏框架实例 实例效果:就是屏幕上的文本跟着点击的地方移动,效果图如下: 步骤: 新建项目“GameSurfaceView”,首先自定义一个类"MySurfac ...
- 【Ext.Net学习笔记】07:后续
这些笔记都是在这个地址看到的:http://www.qeefee.com/category/extnet 然后跟着敲,去理解的. Ext.NET其实就是基于跨浏览器的ExtJS库和.NET Frame ...
- 迭代加深搜索 POJ 1129 Channel Allocation
POJ 1129 Channel Allocation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14191 Acc ...
- NP完全问题 NP-Completeness
原创翻译加学习笔记,方便国人学习算法知识! 原文链接http://www.geeksforgeeks.org/np-completeness-set-1/ 我们已经找到很多很高效的算法来解决很难得问题 ...
- POJ 2142 The Balance【扩展欧几里德】
题意:有两种类型的砝码,每种的砝码质量a和b给你,现在要求称出质量为c的物品,要求a的数量x和b的数量y最小,以及x+y的值最小. 用扩展欧几里德求ax+by=c,求出ax+by=1的一组通解,求出当 ...
- 权限框架 - shiro 自定义realm
上篇文章中是使用的默认realm来实现的简单登录,这仅仅只是个demo,真正项目中使用肯定是需要连接数据库的 首先创建自定义realm文件,如下: 在shiro中注入自定义realm的完全限定类名: ...
- maven总结3
POM文件 maven版本:apache-maven-3.1.1 1.<modelVersion>4.0.0</modelVersion> pom模型的版本,对于maven2 ...