您的位置:首页 > 其它

ajax请求中的中文数据乱码问题

2015-01-26 19:20 246 查看
在遇到乱码时要先确定乱码的原因,因为从前台到后台或从后台到前台要经过一系列的数据传递,而在不同的地方数据的编码格式是不一样的,这样就有可能产生乱码。要解决乱码第一步是通过常用的调试技术如debug或在代码中插入输出代码查看关键变量的值等手段找到乱码产生的根源,也就是在数据传递中最早开始出现乱码的地方,然后确定解决方案,或到网上收索解决办法。

本次出现乱码的环境是:在前台页面上用alert获取要传递的值不是乱码,而经过request请求后就乱码了,在后台同样是乱码

ajax使用的是jquery的ajax()方法,数据传递的是当前页面表单中的字段,如$("#messageId").val(),$("#messageContent").val()等,在前台用alert弹出并不是乱码,于是在网上收索解决办法,一个一个尝试,最后终于解决了。

解决办法:

在js中对要传递的中文字符串进行编码,指定编码格式为"UTF-8" : str=encodeURIComponent(str,"UTF-8");

在后台控制器中获取到传递的中文字符串后对以UTF-8编码格式进行解码: String str=java.net.URLDecoder.decode(request.getParameter("paraKey"),"UTF-8");

优点:在中文数据传递中可以进行指定编码格式的编码和解码,并且成对进行,容易理解

使用的场景:其实无论是使用ajax进行数据传递,还是url传参,还是表单提交都有可能产生中文乱码问题,本法可适用于有js参与的数据传递导致的中文乱码,遇到时都可以一试。

另外如果是后台获取时出现乱码时还可以尝试用不同的编码格式进行解码 如 1.request.setCharacterEncoding(编码格式);

2.String para=new String(request.getParameter("paraKey").getBytes("ISO-8859-1"),"UTF-8");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐