六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 22|回复: 0

解决AJAX中文乱码

[复制链接]

升级  73.33%

42

主题

42

主题

42

主题

秀才

Rank: 2

积分
160
 楼主| 发表于 2013-1-29 10:49:56 | 显示全部楼层 |阅读模式
问题描述:在利用JQuery的$.get()方式url?username=**异步传中文时,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");
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表