在tomcat下用了一个过滤器,一直中文提交(post)内容都正常,今天在过滤器中的doFilter中加了一句
String aaa=request.getParameter("aaa");
后(其他没动,aaa也没有使用),提交的中文都变成乱码了,删除这一句后就正常了。
百思不得其解,希望能得到高手指点一下。

解决方案 »

  1.   

    String aaa=request.getParameter("aaa")==null?"":new String(request.getParameter("aaa").getBytes("iso-88591","targetCoding"));
    其中targetCoding为页面编码,比如GBK
      

  2.   

    String aaa=request.getParameter("aaa")==null?"":new String(request.getParameter("aaa").getBytes("iso-8859-1","targetCoding"));
    其中targetCoding为页面编码,比如GBK
      

  3.   

    奇怪 难道aaa里没有中文也要用String aaa=request.getParameter("aaa")==null?"":new String(request.getParameter("aaa").getBytes("iso-8859-1","targetCoding"));
      

  4.   

    编码全用utf-8,就没有转换的问题了。
      

  5.   

    可能我没有说得太清楚,我的这个aaa程序里根本没有用到。并不是说aaa为乱码,而是jsp中用request.getParameter(...)取的中文全部变成了乱码,而这些和aaa没有任何关系。我想知道的是为什么filter中加这样一句会产生这种结果。
      

  6.   

    String aaa=new String(request.getParameter("aaa").getBytes("iso-8859-1","GBK"));
    就可以转换成简体中文,才能被正常识别,不会出乱码。这与系统的字体有关,要是要繁体,把GBK改成big5,或utf-8
      

  7.   

    看看那文档就很清楚了setCharacterEncodingOverrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader(). 这个方法必须在 getParameter 和 getReader 之前调用 不然就没有效果
      

  8.   

    过滤器只对post方式提交的起作用,你这个原因是因为用的get方式提交的,可以在tomcat的配置文件里修改,或者直接转码,把转码做一个方法直接调用就行。
      

  9.   


    String aaa=request.getParameter("aaa");
    放到request.setCharacterEncoding("utf-8");后面就ok了
      

  10.   

    多谢 interpb(曾曾胡,深怕情多累美人!!!)
    两颗星就是厉害!令人茅塞顿开!