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

在遇到乱码时要先确定乱码的原因,因为从前台到后台或从后台到前台要经过一系列的数据传递,而在不同的地方数据的编码格式是不一样的,这样就有可能产生乱码。要解决乱码第一步是通过常用的调试技术如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");

转载于:https://www.cnblogs.com/guanfeng/p/4251120.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值