解决AJAX中文乱码

问题描述:在利用JQuery的$.get()方式url?username=**异步传[color=red]中文[/color]时,IE出现乱码,而FF是好的!

解决方案:在查资料过程中,获得以下信息,通过浏览器传值时,IE(默认是以UTF-8传值[高级里面可以查看])或FF都是以UTF-8方法传值的,而当通过各种中间件传到后台时中间件又会以ISO-8859-1的方式再次转码,这就是为什么我们在后台可以通过
new String(getRequest().getParameter("dish").getBytes("ISO-8859-1"), "UTF-8")来得到中文的原因!
但是这次很诡异的事情是这样做了,但是IE下仍然出现乱码,FF却是好的!

最后得知在前台传输时加上encodeURI()方法可以解决此问题,这个函数可以解决IE下的怪癖!!
具体实现有两种:
一、
客户端$.get("doupdmenudetail.shtml?param="+encodeURI(param),null,function(data)
服务器端new String(getRequest().getParameter("dish").getBytes("ISO-8859-1"), "UTF-8")
二、
客户端$.get("doupdmenudetail.shtmlparam="+encodeURI(encodeURI(param)),null,function(data)
这里之所有加两个是因为这样代码更加灵活,无论你中间件是否以ISO-8859-1进行转码都不会影响程序,服务器端这样解析:
params=URLDecoder.decode(request().getParameter("param"),"UTF-8");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值