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");
本次出现乱码的环境是:在前台页面上用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");
相关文章推荐
- ajax向后台请求数据包含中文乱码问题解决
- ajax请求数据,Json返回到页面的数据出现中文乱码问题。
- tomcat发布项目 ajax方式post请求返回数据中文乱码问题(Eclipse中tomcat正常)
- NetBox环境下ajax用get获取数据,中文乱码的问题解决:对象不支持此属性或方法: 'Response.CharSet'
- ajax中文数据传输乱码问题以及zend framework escape()调用
- ajax获取数据中文乱码问题最简单的完美解决方案
- jquery中ajax方法提交数据时,中文乱码问题解决。
- ajax解决中文数据乱码问题
- ajax的get请求的中文乱码问题,(jsp 的pageEncoding ="GBK")
- SpringMVC Ajax请求时返回json中文字符串的乱码问题的解决方案
- AFNetworking利用get请求数据中文乱码问题
- Ajax中向Servlet发送请求时中文乱码问题
- 用el表达式显示jquery请求servlet数据的中文乱码问题
- dhl:ajax无法跨域改用getJSON(解决服务器返回json数据中文为乱码的问题$.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; chars)
- $.ajax()前台数据传至后台,中文乱码问题
- 关于客户端与服务器ajax使用json数据交互,出现中文乱码或因包含html标答而报错的问题(base64加密)
- Ajax向后台请求的数据中中文编码的问题
- 使用Struts 2框架、ajax提交中文数据在后台乱码的问题
- jsp中 ajax的get请求的中文乱码问题的解决方法
- ajax获取数据中文乱码问题最简单的完美解决方案