我在js文件里用Ajax技术发送请求

var url = "path?name="+document.getElementById("name").value;
new HTMLRequest().open("GET",url,true);在提交的表单里name的值是汉字。是utf8字符集。我也写了过滤器,所有的字符集都设置为utf8了。
在struts中的action方法里
用请求获取参数name时获取的是乱码。这是怎么回事呢?

解决方案 »

  1.   

    目前不管任何过滤器或者怎么出理方法 都解决不了
    xxx.jsp?&参数=??这个?代表中文,因为get方式提交中文 处理不了,只能传递数字或者字母的数据
      

  2.   

    看我博客的文章:Java ajax 中文乱码解决方案http://blog.javawind.net/disp-72-3.shtmlajax Js 客户端:
    var data = "words="+encodeURI(encodeURI(_word));   //  注意,这里把需要提交的中文字符串进行两次encodeURI
    xmlhttp.open("post",postAction, true);   
    xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    xmlhttp.send(data);ajax Java 服务器端:
    String words= request.getParameter("words");
    words= java.net.URLDecoder.decode(words, "UTF-8");通过 URLDecoder.decode 解码后 即可得到正确的中文字符串!
      

  3.   

        get 方式传值的时候用的是字符集ISO-8859-1它不支持中文,楼主可以用post方式传值,如果实在解决不了乱码问题的话,在action中可以用字符串的
    String result = new String(乱码的字符串.getByte(),"utf-8");来得到想要的字符串result,这个是不乱码的。