Ajax入门(二)——乱码问题的解决

我们使用Ajax与服务器交互时,通常会传些参数过去,这些参数有时后会是中文,这时,就有可能产生乱码问题了。

解决方法一

使用一次encodeURI()方法。在javascript代码中将请求访问的URL地址使用encodeURI()方法转换一次,在服务器端接收参数后在对参数重新编码,例如在Java中,对接收来的参数(username)可以重新按UTF-8方式编码:new String(request.getParameter("username").getBytes("ISO-8859-1"), "UTF-8"); 这样就能解析到正确的中文参数了。

具体代码为:

var url = encodeURI("servlet/AjaxServlet?username="+username); //将请求的地址和参与编码
(Java)服务器端代码:
String old = request.getParameter("username").trim();
//注意,编码格式要和html或jsp页面的编码格式相一致,如果为gb2312,都应为gb2312
 old = new String(old.getBytes("ISO-8859-1"), "UTF-8");

解决方法二(推荐)

方法一可以解决大部分浏览器的乱码问题,可有时候并不是万能的,有时候还是会乱码,所以我推荐下面的方法。

方法一对请求的URL地址进行了一次重新编码,而在方法二中需要进行两次(不要问我为什么,我也不太清楚),也就是使用两次encodeURI。

具体为:

var url = encodeURI("servlet/AjaxServlet?username="+username);
url = encodeURI(url);
注意上边的两次encodeURI需要分开写,不能写到一句里面,不能像这样:var url = encodeURI(encodeURI("servlet/AjaxServlet?username="+username));这样是没有效果的,请读者自行测试。

在服务器端则使用Java自己的api的URLDecoder的decode()方法对参数进行解码。

代码如下:

String old = request.getParameter("username").trim();		
old = java.net.URLDecoder.decode(old, "UTF-8");


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值