Request和Response中文乱码问题的解决方案和区分
首先,在刚接触这个中文乱码问题的时候,还是比较混乱的,因为针对request和response各自都有自己的解决方案,而且思路相似,方法也很相似,又针对get和post两种提交方式,分两种解决中文乱码的方案;针对response响应,分字节流和字符流的响应方式,所以,是两个大的方向,四个小的方向。
一:Request对象接收中文数据
1.1Post方式接收中文
/**
* 演示Post方式提交,解决中文乱码问题
*/
public class RequestDemo extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/**
* 产生乱码的原因:
* post提交的数据在请求体中,request对象接收到数据之后,会将数据放入到request缓冲区,缓冲区有默认编码:ISO-8859-1:不支持中文;
*
* 解决方案:
* 将request缓冲区的编码更改就行了
*
*/
request.setCharacterEncoding("UTF-8");
String parameter = request.getParameter("name");
System.out.println("姓名:"+parameter); }
1.2get方式提交接收中文
/**
* 产生乱码的原因:
* get提交的数据在请求行url后面,在地址栏其实已经进行了一次编码(默认:ISO-8859-1:对中文不友好)
*
* 解决方案:
* 将存入request缓冲区的数据以默认的方式接收,但以UTF-8的方式解码
*/
String name=request.getParameter("name");
String param=new String(name.getBytes("ISO-8859-1"),"UTF-8");
System.out.println("姓名:"+parameter);
二:Response响应数据的时候中文乱码问题及解决方案
2.1使用字节流方式响应中文
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/**
* 使用字节流响应中文
*/
//ServletOutputStream outputStream = response.getOutputStream();
//outputStream.write("中文".getBytes());
/**
* 以上这种方式是否能够避免不出现中文乱码问题呢?
* 不一定:
* 中文乱码的产生与中文转化成字节数组和浏览器打开方式(打开时采用的默认字符集)有关
*
* 解决方案:
* 将中文转化成数组的字符集和浏览器打开时候的字符集一致就行
*/
ServletOutputStream outputStream = response.getOutputStream();
//设置浏览器打开时默认的字符集
response.setHeader("Conten-Type", "text/html;charset=UTF-8");
//设置中文转换成字节组的字符集编码
outputStream.write("中文大师".getBytes("UTF-8"));
2.2使用字符流的方式响应中文
/**
* 字符流的方式响应中文
*/
response.getWriter().print("中文大侠");
/**
* 使用上述代码向页面输出中文是否会产生乱码?
* 一定乱码
* 原因:
* 字符流是有缓冲区的,response获得字符流,response设计默认的缓冲区编码是ISO-8859-1。
* 解决: 设置response获得字符流缓冲区的编码字符集(这句话体现在:response.getWriter(),详情请看API)和
* 设置浏览器默认打开时候采用的字符集一致即可。
*
*/ // 设置浏览器打开时默认的字符集
response.setHeader("Conten-Type", "text/html;charset=UTF-8");
//设置response获得字符流缓冲区的编码字符集
response.setCharacterEncoding("UTF-8");
//响应到浏览器
response.getWriter().print("胡春春和阿珠"); //下面是一种简化的方式(推荐记住和掌握)
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print("胡春春和阿珠");
Request和Response中文乱码问题的解决方案和区分的更多相关文章
- request和response中文乱码问题后台处理办法
request接收参数的中文乱码的处理: GET: 方法一:使用String的构造方法: new String(request.getParameter("传过来的name").g ...
- Web jsp开发学习——终极解决jsp中request和response中文乱码的问题(加个过滤器)
中文乱码真的很烦人的.而且每次都要写,可麻烦了,而且有时候写了还不一定管用,所以我们可以试试过滤器 1.每个jsp头上当然要写上utf8啦 <%@ page language="jav ...
- request、response 中文乱码问题与解决方式
request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码: response乱码指的是:服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码: ...
- jmeter解决request response中文乱码问题
一:主要内容 解决request请求入参中文乱码问题 解决response响应数据中文乱码问题 二:解决request和response中文乱码问题 request结果:-中文已经不乱码了 respo ...
- [转]Servlet 中文乱码问题及解决方案剖析
原文地址:http://blog.csdn.net/xiazdong/article/details/7217022/ 一.常识了解 1.GBK包含GB2312,即如果通过GB2312编码后可以通过G ...
- Java_Servlet 中文乱码问题及解决方案剖析
一.常识了解 1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.java.nio.charset.Charset.defaultCharset() 获得 ...
- JSP 中文乱码显示处理解决方案
来源: <http://blog.csdn.net/joyous/article/details/1504274> JSP 中文乱码显示处理解决方案 分类: 所有 Web前端 J2EE20 ...
- Servlet 中文乱码问题及解决方案剖析
转自:http://blog.csdn.net/xiazdong/article/details/7217022/ 一.常识了解 1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK ...
- jsp中文乱码六种情况---解决方案
转 jsp中文乱码六种情况---解决方案 2016年10月22日 21:32:55 阅读数:10672 来源:http://blog.csdn.net/lovesummerforever/articl ...
随机推荐
- ES6框架的搭建
1.引入traceur.js http://google.github.io/traceur-compiler/bin/traceur.js 2.将Traceur编译器用于网页 new traceu ...
- eslint规则记录
"off"或者0 //关闭规则关闭 "warn"或者1 //在打开的规则作为警告(不影响退出代码) "error"或者2 //把规则作为一个 ...
- plan,idea,and dream
自学机器学习/数据分析/前端 目前想法是从前端入手,学会写/分析网页及其内容/数据,然后使用爬虫爬取数据,然后用机器学习算法对数据进行处理.哈哈,想法是不是太天真了. 学习都从网上的资料入手,因此发现 ...
- Mac怎么生成.ssh文件
可使用如下命令生成 1 ssh-keygen -t rsa 因为mac系统也是从unix基础上演变过来的,所以很多核心的东西也是与unix相通的. 1.-t 是指定加密参数为ras,默认是dsa 2. ...
- php下载远程大文件(获取远程文件大小)
function download_file($url) { // $url = http://192.168.8.95/vm/download_file?downurl=http://192.168 ...
- 性状、生成器、闭包、OPcache【Modern PHP】
目录 性状 Trait 生成器 闭包 Zend OPcache PHP发展这么多年,技术.架构都已经革新,了解现代PHP很重要,最近在看Model PHP这本书,系统的了解下PHP相关的概念. 性状 ...
- CentOS 6 各种启动文件损坏及修复
stage1 mbr的破坏和恢复 清空mbr 前446字节 dd if=/dev/zero of=/dev/sda bs=1 count=446 如果没有挂载启动光盘,会显示这样 如果启动前挂载了光盘 ...
- pip 升级 Appium-Python-Client
第一种方法: pip install --upgrade Appium-Python-Client 如果出现权限提醒: sudo -H pip install --upgrade Appium-Pyt ...
- MMM的一个Bug
最近由于 CPAN上 Net::ARP 这个包的稳定版本从 1.0 升级到了 1.0.8, 导致触发了mmm的一个bug. bug的现象: agent没有办法将VIP附着在本机上. agent日志 ...
- Linux调整系统时间
1.yum search ntp(搜索可安装的ntpn) 2.yum install ntp.x86_64 3.service ntpd start 4.ps -ef | grep ntpd 5.da ...