AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题

     在浏览器端使用XMLHttpRequest对象向服务器端传送中文参数,如果不在浏览器端和服务器端进行处理时,会出现中文乱码问题.针对这种问题,有很多的解决办法,但往往都是在IE下可以正常显示中文,在其他浏览器下(比如FireFox)却仍然是乱码.在FireFox下解决了乱码问题,但回到IE下访问却出现了乱码问题.所以针对要在目前流行的各种浏览器下解决中文乱码问题,才能使编写的Web程序变得通用.

    针对这种问题的解决方案,我总结大致有两种:

    一,在浏览器端对要传递的中文参数进行编码处理.代码如下:

    xmlhttp.open("POST","AjaxServlet",true);  //请求参数初始化

    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //因为请求方式为POST,所以这里要设置请求头.(如果请求方式为GET,此句代码可以省略)
 
    xmlhttp.send("name="+encodeURI(encodeURI("中国"))); //向服务器端发送参数


    在服务器端代码:
 
    PrintWriter out = response.getWriter();  //得到response的输出流对象

    String name1 = request.getParameter("name");  //得到KEY为"name"的请求参数  
   
    String name = URLDecoder.decode(name1,"utf-8");  //对得到的参数进行解码

    out.print(name); //向浏览器端发送数据


    二,在浏览器端对要传递的中文参数进行编码处理.代码如下:

   
    xmlhttp.open("POST","AjaxServlet",true);  //请求参数初始化

    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //因为请求方式为POST,所以这里要设置请求头.(如果请求方式为GET,此句代码可以省略)

    xmlhttp.send("name="+encodeURI("中国")); //向服务器端发送参数

    在服务器端代码:

    PrintWriter out = response.getWriter();  //得到response的输出流对象

    String name1 = request.getParameter("name");  //得到KEY为"name"的请求参数  
   
    String name = new String((name1.getBytes("ISO-8859-1")),"UTF-8");  //对得到的参数进行解码
       
    out.print(name); //向浏览器端发送数据
  
    以上两种方法,在使用XMLHttpRequest对象传递中文参数时,乱码问题可以在任意浏览器下解决,正确显示中文.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值