页面和后台servlet中都设置成utf-8了,Ajax还是乱码

很奇怪,都弄成统一编码了,还是乱码,于是看了很多网上的文章,最后总结成以下几点:

1、 <META http-equiv=Content-Type content="text/html; charset=utf-8">;

2、传递参数时:var url="/Province-City/selectedservlet?selectValue="+encodeURI(selectValue)+"&selectId="+selectId+"&sid="+Math.random();

不管是get还是post请求,在传递参数时都用encodeURI方法来处理,它的用处是将字符串转成utf-8编码方式。当然最好在url中添加一个Math.random()函数,这是因为ajax是有缓存机制的,所以添加一个时间戳,有利于每次请求都是一个新的请求,这样就不会一开始出错就老出现同样的错误了。

3、当然,如果是get方法的话,就可以直接这样了:ajax.open("GET",url,true);

post方法时:ajax.open("POST",url,true);
                ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');

这是万全之策。

4、servlet后台中:response.setContentType("text/html; charset=UTF-8");
        String selectV=request.getParameter("selectValue");
    selectV=new String(selectV.getBytes("ISO-8859-1"),"utf-8");

这样,好像都可以解决问题了。不管是后台得到的参数还是后台返回给页面的参数都不会出现乱码了。

当然很奇怪的就是:在另外一个工程里面,用的get请求,页面: var url="http://localhost/ajax2/RegServlet?uname="+uname;
    ajax.open("get",url,true);

后台只用了:response.setCharacterEncoding("utf-8");
        String uname=request.getParameter("uname");
        System.out.println("没有乱码哎:"+uname);却没有乱码,而在新的 一个工程里面用同样的方法,却出现了乱码。用post也差不多,以前都那样,没出现乱码,可是后面新的工程都出现乱码。很希望高人能够解答啊???非常谢谢了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值