各位高手,小弟做个Ajax的小东西,但用Ajax传过来的参数乱码,我的项目是UTF-8的,过滤器用过了,String字符格式转换也用过了,最后“String toname =new String(request.getParameter("toname").getBytes("iso8859_1"),"UTF-8");”才把Action里的乱码解决,但Jsp中的这样写了以后,只要大于4个字节后面的就会乱码~~请高手指教!
谢谢

解决方案 »

  1.   

    不是几个字节的问题 是奇数的都会有这样的问题这个需要你传字符串的时候js里要处理一下 类似与java的decode,具体方法一时想不起来了
      

  2.   

    你的参数是通过url传递的是吧?
    xmlHttp.open("POST",encodeURI(encodeURI(url)),true);
    String param=ava.net.URLDecoder.decode(Request.getParameter("param"),"UTF-8");
      

  3.   

    是的 是用公司的一个Ajax的框架,已经改成post方式了。。但要是添加下面的话 我就得研究以下框架了 谢谢各位
      

  4.   

    ACTION里增加下面第一句,后一行是表明第一句的放置位置:(若是解决了记得给分)response.setContentType("text/html;charset=gb2312");
    PrintWriter out = response.getWriter();
      

  5.   

    response.setContentType("text/html;charset=UTF-8");当然是这样写了!还有,字符编码的过滤器先停用一下再测试!! 
      

  6.   

    /**
     * 获得 response 的 writer对象
     * 
     * @param response
     * @return
     * @throws IOException
     */
    protected PrintWriter getWriter(HttpServletResponse response) throws IOException { // 编码
    response.setHeader("Content-Type", "text/html;charset=GBK"); // 不缓存
    response.setHeader("Cache-Control", "no-cache, must-revalidate");
    PrintWriter pw = response.getWriter();
    return pw;
    } /**
     * 将串写入 response
     * 
     * @param s
     * @param response
     * @throws IOException
     */
    protected void write(String s, HttpServletResponse response) throws IOException { PrintWriter pw = getWriter(response);
    pw.write(s);
    pw.flush();
    }
      

  7.   

    试一下这个方案:http://hhoucn.spaces.live.com/blog/cns!69723141FDF1F9C7!194.entry