---Servlet 中文乱码问题以及解决方案---
Servlet中乱码分为request乱码和response乱码。
一.request中文乱码
request请求分为post和get,产生乱码的原因大致都一样,
但是对于不同的请求方式解决方式不一样。
***Post请求
执行过程:
1.浏览器发出http请求(请求按浏览器的默认码表编码--一般是GB2312)
2.后台Servlet接收到http请求,servlet根据默认码表解析里面的数据(一般是ISO-8859-1)。
乱码原因:
1.发出http请求和解析请求用的码表不一致。
解决方案:
request.setCharacterEncoding("GB2132");
//用同样的码表解析请求
备注:request.setCharacterEncoding 只对Post请求有效
------------------------------------------------------------
***Get请求
过程和原因相同,解决方案不一样。
解决方案:
String username=request.getParameter("name");
String value=null;
value=new String(username.getBytes("ISO-8859-1"),"gb2312");
//先按码表,还原成byte数组,最后再按指定码表生成字符串。
二.response中文乱码
问题引入:
在网上很有效的解决方法是添加:
response.setCharacterEncoding("UTF-8");
解决不了,后来又搜到一条解决方法是:
respnse.setHeader("content-type","text/html;charset=UTF-8");
两句都填上,后来终于解决了这个问题;
Http Response响应 执行过程:
1.web服务端发出Http response响应(响应中的数据可以指定编码)。
2.浏览器接收到Http响应,根据指定码表解码内容(如果不指定编码则会用自己默认的编码)。
乱码原因分析:
1.如果在上面的执行过程中,第一步中的编码和第二步中的编码没有用
同一个码表进行编码和解码,则可能出现问题。
2.同一个数值,在不同码表上对应的值不一样。
解决方案:
response.setCharacterEncoding("UTF-8");
//目的是用于response.getWriter()指定输出的字符流的编码
respnse.setHeader("content-type","text/html;charset=UTF-8");
//目的是为了控制浏览器的行为,指定浏览器用UTF-8进行解码
备注:GBK和GB2312的关系,GBK包含了GB2312。
参考文章:http://blog.csdn.net/xiazdong/article/details/7217022
分享到:
相关推荐
web乱码解决web乱码解决web乱码解决web乱码解决web乱码解决
Java_EE中文乱码问题解决方案:如果你是从事java web开发,中文乱码是不是经常遇到,这里有详细的配置如果从MyEclipse(Eclipse),TOmcat中修改代码的格式,从而达到总体的编码一致,杜绝乱码
JAVA Web 中文乱码问题
这里总结了我在j2ee开发过程中,中文乱码的解决方案。希望能够帮到大家!
乱码解决_MYSQL.txt
JSP乱码 N种解决方案
乱码解决 乱码解决 乱码解决 乱码解决 乱码解决 乱码解决 乱码解决
支持jmeter5.0 请求参数中文乱码,修改了jar源代码,直接放到lib/ext 覆盖即可
Ajax中文乱码问题解决方案
highchats_乱码解决方案
JSP乱码解决方案大家可以看看,可以有利于大家,在JSP页面乱码问题,扥到更好的解决方案
J2ee应用中文乱码问题解决方案.doc
很好用,很全面的解决java Web开发的解决中文乱码的文档
开发者在web开发的时候经常遇到乱码问题,此处很系统的介绍了其解决方案
修改了jar源代码,解决multipart/form-data上传包含中文文件名乱码问题,覆盖apache-jmeter-4.0\lib\ext目录下ApacheJMeter_http.jar即可。
简单可靠的filter源码和详细配置,轻松解决web中文乱码问题,web开发者必备神器你值得拥有!
1.解压 2.将解压得到的文件拷贝到source insight的根目录下 3.重启source insight
解决web项目中出现的乱码问题,很方便,只要一个java文件,同时在web.xml文件中配置该java文件就OK了 ,很方便的
JSP中文乱码的产生原因及解决方案,比较全面的解决中文乱码问题
解决Jmeter5.4.1上传文件中文乱码问题和录制脚本中文乱码问题,其他版本可能不兼容会报错无法使用 使用时替换原本的lib\ext目录下的ApacheJMeter_http.jar文件并重启,上传文件时,需要勾选“对POST使用multipart / ...