为什么我在Servlet中第1名就用语句request.setCharacterEncoding("utf-8");设置了request的编码,但紧接着打印前台传过来的中方还是乱码呢? 页面上为<meta http-equiv="Content-Type" content="text/html; charset=utf-8">现在面临的问题是前台传来的中文中执行的SQL中是乱码,导致查询无结果。

解决方案 »

  1.   

    web乱码
    http://blog.csdn.net/crazylaa/archive/2009/12/24/5066784.aspx
    http://seagar-collection.javaeye.com/blog/297149
      

  2.   

    String ss = new String(s.getBytes("ISO8859-1"),"GBK");
      

  3.   

    你用的是Ajax提交吗?
    如果是且用的是get方式可以在页面
    var url = "attachment.do?method=rename&ATCH_NAME=" + encodeURI(encodeURI(inputtext));
    在servlet中则是
    response.setContentType("text/html;charset=utf-8");
    String nodeNameBefore = request.getParameter("ATCH_NAME");
    String nodeName = URLDecoder.decode(nodeNameBefore, "utf-8");不过建议用post方式,两都省了。
      

  4.   

    doPost()方法第一行位置添加
    response.setContentType("text/html;charset=GB2312");
    request.setCharacterEncoding("gb2312");
      

  5.   

    大家说的写过滤器试过了,GET,POST提交方式试过了。功能是这样的:
    前台页面上点击按钮后,请求Servlet,条件中有中文,而且中文内容要作为SQL语句中的条件。在过滤器或servlet中通过request.setCharacterEncoding设置成gbk,utf-8,gb2312都试过,没有解决问题。在servlet中调用ss打印还是乱码,但是String ss = new String(s.getBytes("GBK"),"UTF-8");可以打印出中文来(tomcat的server.xml中没有配URIEcoding)。可是这对我来说不能解决问题,调用的接口获取参数的方法是传request进去。我requst.setAttribute("ss",ss)那边获取后还是乱码
    还有一个问题是我提交请求过来时的那个HTML页面上,charset只能设置成utf-8,否则页面报错,(页面内容都是通过JS组件画出来的。)
      

  6.   

    提交方式现在是用的window.location.href=""但是我也试过创建form并用post方式提交,还是不行
      

  7.   

    乱码问题,一句话,就是所有所有用到编码的地方的编码格式不统一,解决办法,让他们统一起来。
    PS:上面是一句经典废话,直接忽略就行,说起来容易做起来难。
    1、你的数据可以使用form提交,隐含的form什么的都行。2、如果你的是通过URL传递中文的话,给你个简单的转码传递。var url = "savePhoneMessage.do?inci='"+inci+"'&phone='"+encodeURI(encodeURI(phone))+"'&from_person='"+encodeURI(encodeURI(from_person))+"'&to_person='"+encodeURI(encodeURI(to_person))+"'";//注意:是用两次“encodeURI”
    后台:String from_person = java.net.URLDecoder.decode(request.getParameter("from_person"),"utf-8");//进行转码操作
    String to_person = java.net.URLDecoder.decode(request.getParameter("to_person"),"utf-8");//进行转码操作
      

  8.   

    你把tomcat服务器中的编码格式,设置成GBK。把页面中和过滤器中的全部设置成GBK。试试
      

  9.   

    并且前台提交过来时用alert打印是正常的
      

  10.   

    String ss = new String(s.getBytes("ISO-8859-1"),"GBK");
      

  11.   


    页面只能用UTF-8,页面内容是用JS组件画出来的。不用UTF-8的话页面就报错了,。页面,SERVLET,tomcat配置都用UTF-8是试过了。可是太让我伤心了。乱码还是挥之不去  :(
      

  12.   

    请求和响应都应该设置为‘utf-8’ 吧,在page指令里加上pageEncoding="gbk"吧
      

  13.   

    s = new String(s.getBytes("ISO-8859-1"),"UTF-8");
      

  14.   


    不知道为什么,另外一个功能也是调用的这个servlet,用上面的方法转码后可以取到中文了。当前这个页面提交过来的中文非得String ss = new String(s.getBytes("GBK"),"UTF-8");才能取到中文。HTML页面上charset=utf-8