目前为止,接触了蛮多乱码问题,一般按照下面几种方式都可以解决:
get 请求的:页面用js编码,后台用Java解码,
post:① request.setCharacterEncoding("UTF-8");
     response.setCharacterEncoding("UTF-8");
②在web.xml文件中,添加编码 <filter>  
③String reserve1= new String(request.getParameter("reserve1").getBytes("iso-8859-1"),"utf-8");
后台用这种方式转。第一个问题:一般都是套用这几种,哪种对选哪个,可时间长了,就想知道是为什么,网上也查找了相关资料,但看的要么是不明白,要么是感觉没讲到点。希望各位大大可以推荐我一些资料了解了解
第二个问题:用纯springmvc来做一个ajax传递数据:tomcat编码,页面编码,web的fileter编码,都是GBK,整个项目也是。
代码如下: $(function() {
$("#add").click(function() {
var userName=window.encodeURI($("#userName").val());
var age=$("#age").val();
var user={userName:userName,age:age};
$.ajax({
url:"/SpringMVC6/user/data/addUserJson",
type:"get",
data:user,
success:function(data){
alert("userName "+data.userName+"---age--"+data.age);
}
})
});
});后台代码如下:
@RequestMapping("/addUserJson")
public String  addUserJson(User user,HttpServletRequest request) throws UnsupportedEncodingException{
System.out.println("userName "+user.getUserName());//第一个结果
 String name = java.net.URLDecoder.decode(user.getUserName(),"GBK");
 System.out.println("name GBK"+name);//第二个结果
 String name2 = java.net.URLDecoder.decode(user.getUserName(),"UTF-8");
 System.out.println("name2 utf-8"+name2);//第三个结果
request.setAttribute("userName",  user.getUserName());
request.setAttribute("age",  user.getAge());
return "/userManager";
}
后台打印:
userName %E9%BE%99%E8%91%B5
name GBK榫欒懙
name2 utf-8龙葵
我是超级不明白,为什么最后一种居然会对,应该是没有哪里有涉及到utf-8吧,
感觉这里写的也有些复杂,有没有其他更简单的解决乱码方式呢?