Web应用乱码(2)__原因以及解决方案详解
2013-01-25 15:26
281 查看
---Servlet 中文乱码问题以及解决方案---
Servlet中乱码分为request乱码和response乱码。
但是对于不同的请求方式解决方式不一样。
***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.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。
参考文章:/article/7664822.html
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。
参考文章:/article/7664822.html
相关文章推荐
- windows tomcat web应用以及eclipse console乱码解决方法
- Web开发中出现乱码的原因透析及解决方案(一)--Codepage的重要性
- 读XML文件乱码的原因以及解决方案
- [置顶] 当前上下文不存在 ScriptManager 的原因分析以及解决方案 (System.Web.Extensions)
- android进入应用黑屏原因以及解决方案
- 当前上下文不存在 ScriptManager 的原因分析以及解决方案 (System.Web.Extensions)
- Web应用乱码(1)__解决方案
- web.xml is missing and <failOnmissingwebxml> is set to true 原因以及解决方案
- URL传参的中文乱码原因以及解决方案
- 自定义C/C++ dll导出后函数名为乱码(如@func@@YGXHX@Z)原因以及解决方案
- 《TomCat与Java Web开发技术详解》(第二版) 第三章节的学习总结--一个WEB应用的目录结构以及如何发布WEB应用
- 如何在docker中部署springboot的web应用 以及docker的常用命令大全
- MySQL主从延迟原因以及解决方案 推荐
- 【运维小分享】基于Web应用的性能分析及优化案例详解
- session机制详解以及session的相关应用
- ServletContext与Web应用以及Spring容器启动
- Web离线应用解决方案——ServiceWorker
- 详解iOS应用中播放本地视频以及选取本地音频的组件用法
- c#或js url传参中文乱码解决方案,web.config 内设置编码格式
- 详解iPhone开发应用中如何使用Web视图