标签:
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传值
`这个比较麻烦,据测试,不同的浏览器有不同的对中文编码,怎么办呢?
我们可以采用js的encodeURI()进行统一的编码,然后在后台进行统一的解码
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接收前让ie以utf8进行解码。
<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