估计你用的是tomcat吧
Tomcat5以后的request.setCharacterEncoding() 方法对 GET 方法提交的数据无效,对 POST 提交的数据处理正确,不知道算不算Tomcat5的BUG,tomcat4好像正常的。
建议采用 new String(str.getBytes("ISO-8859-1"), "GB2312") 这样的用法.

解决方案 »

  1.   

    你要转成UTF-8,那应该是doGet()方法中改成这样:
    String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");   
      

  2.   

    可以修改tomcat的servlet.xml文件,找到<Connector .../>标签,然后在里面加上<Connector ... URIEncoding="GBK"/>
    或者
    把处理请求的程序放到doPost方法中,然后在doGet方法调用doPost方法
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doPost();
    }
      

  3.   

    zjf405(crazy stone):把处理请求的程序放到doPost方法中,然后在doGet方法调用doPost方法
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doPost();
    }
    这样还是会出现乱码的
    我的doPost()这样写的不知是否有问题:
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    String name=request.getParameter("name");
    PrintWriter out=response.getWriter();
    out.println(name+"哈哈");
    }
    静态输出的"哈哈"都有乱码了!
      

  4.   

    gstring(爱生活,爱java) :
    我用的是TOMCAT5。
    String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8"); 
    这样是可以,可比较麻烦。zjf405(crazy stone)说的正确,修改server.xml设置。呵呵,终于不用为中文问题烦恼了。
    结帖了。多谢两位