码迷,mamicode.com
首页 > 其他好文 > 详细

中文乱码问题

时间:2015-12-03 13:24:13      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

http://blog.csdn.net/xiazdong/article/details/7217022(有图容易理解)

http://blog.csdn.net/fancylovejava/article/details/7700683

Request请求乱码问题:

Get的请求使用temcat服务器 不会考虑使用request.setCharacterEncoding方法设置的编码会永远使用iso-8859-1编码(因为在Tomcat5.0中,默认情况下使用ISO- 8859-1对URL提交的数据和表单中GET方式提交的数据进行重新编码(解码))

 

String str = new String (req.getParameter(“str”).toString().getByte s(“iso8859-1”),”gbk”);

 

POST,取决于你的页面编码,如果你的页面编码为iso8859_1

String str = new String (req.getParameter(“str”).toString().getByte s(“iso8859-1”),”gbk”);先将你的字符串变为iso8859_1字节流,再转为gbk

 

Filter解决get,post提交的乱码问题:包装设计模式........

 

Ajax传值

`这个比较麻烦,据测试,不同的浏览器有不同的对中文编码,怎么办呢?

我们可以采用jsencodeURI()进行统一的编码,然后在后台进行统一的解码

str= java.net.URLDecoder.decode(str, "UTF-8");

 

 

 

生成相应对象(请求或响应)之前要对照一个编码表,传给ie显示前要对照一张编码表!

 

Response乱码问题:

response.setContentType("text/html;charset=UTF-8"); 目的是为了控制浏览器的行为,即控制浏览器用UTF-8进行解码(二)

response.setCharacterEncoding("UTF-8"); 目的是用于response.getWriter()输出的字符流的乱码问题,如果是response.getOutputStream()是不需要此种解决方案的;因为这句话的意思是为了将response对象中的数据以UTF-8解码后发向浏览器;(设置response使用的码表)

对于发送数据,服务器按照response.setCharacterEncoding—contentType—pageEncoding的优先顺序,对要发送的数据进行编码。 

总结:utf8的方式存储中文到response对象,当发送请求后ie接收前让ieutf8进行解码。

<meta http-equiv="content-type" content="text/html"/> 等价于 response.setContentType("text/html");

 

Request乱码问题:

request请求分为post和get,对于不同的请求方式有不同的解决乱码的方案;

 

对于表单中POST方式提交的数据,只要在接收数据的JSP中正确request.setCharacterEncoding参数,即将对客户端请求进行重新编码的编码设置成浏览器编码,就可以保证得到的参数编码正确

 

Request.setCharacterEncoding() 的作用是设置对客户端请求进行重新编码的编码。只对post请求有效。

 

中文乱码问题

标签:

原文地址:http://www.cnblogs.com/juansiwei/p/5015660.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!