编写了一个jsp页面,其中它的编码方式是gb2312,它向一个servlet页面传递一个参数,当传递的参数的值是中文的时候,在servlet服务页面通过request.getparameter("")接受到得值却出现了中文乱码,即使在它之前调用request.setCharacterEncoding("gb2312");也出现了中文乱码,使用new String(name.getBytes("ISO-8895-1"),"gb2312")也不行!
是不是jsp页面与servlet页面的编码方式不同造成的呢?不改变jsp页面的编码方式应该如何解决呢?请高手指教下谢谢!

解决方案 »

  1.   

    用request.setCharacterEncoding("gb2312");之后,其实就没必要用new String()了!不过推荐写个filter,这样,就不用在每个功能里面去转码。
    filter代码如下:HttpServletRequest req = (HttpServletRequest) request;
    HttpServletResponse resp = (HttpServletResponse) response;
    req.setCharacterEncoding("utf-8");
    resp.setCharacterEncoding("utf-8");
    chain.doFilter(request, response);
      

  2.   

    都用utf-8好啦,用了utf-8,一样可以传中文参数乱码的原因是编码不一致啊
      

  3.   

    我发现我的问题是我在连接中使用了这样的语句<a href="xxxxx?page=<%=filename%>"></a>
    是不是传递参数使用了get方式呢?即使编码一致也不行,还是出现了乱码,应该如何解决呢?
      

  4.   

    <a href="xxxxx?page=<%=filename%>"></a>
    你这种方式提交相当于get方式提交,get方式提交会出现乱码,你还是放表单里提交表单吧。
      

  5.   

    或者 forms[0].action="xxxxx?page=<%=filename%>";
    forms[0].method="post";
    forms[0].submit();