关于Java项目中乱码问题,头疼的厉害

meiyang4786 2017-08-18 07:00:08
目前为止,接触了蛮多乱码问题,一般按照下面几种方式都可以解决:
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吧,
感觉这里写的也有些复杂,有没有其他更简单的解决乱码方式呢?
...全文
387 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiyang4786 2017-08-21
  • 打赏
  • 举报
回复
引用 1 楼 q54244125 的回复:
浏览器都有个默认编码的,看看你浏览器设置的默认编码
看错了,我看了两个页面,一个是平常的网页(utf-8),一个是我自己写的页面的,还是GBK编码,应该是没有影响的。
meiyang4786 2017-08-21
  • 打赏
  • 举报
回复
引用 1 楼 q54244125 的回复:
浏览器都有个默认编码的,看看你浏览器设置的默认编码
看到了,居然是utf-8的。
天涯若风 2017-08-21
  • 打赏
  • 举报
回复
其实最好的方法,就是获取到request中的编码,然后根据编码去设置自己的编码格式。再response回页面。
天涯若风 2017-08-18
  • 打赏
  • 举报
回复
浏览器都有个默认编码的,看看你浏览器设置的默认编码

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧