我在jsp页面中将输入的用户名的密码提交到servlet中,提交时用户名输入的是中文,这是我获得参数的代码
         String userName=request.getParameter("userName");
   我用userName=new String(userName.getBytes("gb2312"),"UTF-8")来设置编码,但为什么还会出现乱码

解决方案 »

  1.   

    我说一下几种解决乱码的方式:
    你看一下对你有没有用:
    1.在页面设置编码方式:UTF-8
    2.写一个字符编码过滤器,过滤器中写下如下代码即可://将对象转换为HTTP
    HttpServletRequest request = (HttpServletRequest)arg0;
    HttpServletResponse response = (HttpServletResponse)arg1;
    //设置字符编码属性
    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html;charset=UTF-8");
    3.在tomcat设置端口号的地方的后面 写下如下代码:
    URIEncoding=“UTF-8”
    4.在传参数之前,先将字符转码:
    URLEncoder.encode("要传递的参数","UTF-8");
    5.先将字符转换成进制码 然后要用的时候在转换回来
      

  2.   

    request.getParameter  默认获得的汉字是iso-8859-1的。
    楼主可试试iso -》 gb
    或iso -》 utf
      

  3.   

    顶一下 1 楼,顺便说一下,有的时候提交时,如果method是 get 也会出现乱码,要设置为 post
      

  4.   

    可能是你的浏览器使用的编码和你jsp页面使用的不一致,你在页面中对请求进行统一编码试试看。<%  
    request.seCharacterEncoding("gb2312");  
    %>  
      

  5.   

    呵呵,又是编码问题,get传送汉字,然后用request获取后再用new String()转码是不行的,因为request对象从异构的网络中接收到数据后已经就做了一次转码,取出数据后再用new String()转一次,乱上加乱。用我给以下贴中的回复,在request内部进行转码:
    http://topic.csdn.net/u/20091010/11/d03d91a2-1f77-4895-9873-89caf7bbb6c0.html
    (注意贴中第1楼的代码)。将项目所有编码都统一到utf-8,包括html编码声明、存储的物理文件编码(这个很重要,设置Eclipse、Dreamweaver这编辑器的编码格式为utf-8)、web.xml编码过滤器,然后配上重写request来处理get方式接收的汉字,一般就很少再出现编码乱的问题。
      

  6.   

    http://youzi530.blog.163.com/blog/static/44471702200881801023405/
      

  7.   

    字符乱码的最好解决方案是:
    把所有的字符编码设置成相同的编码(JSP、过滤器、IDE中相应文件的编码、服务器的URIEncode,建议用utf-8)否则的话,手动转来转去很容易乱套。
      

  8.   

    仅仅在取参数时new String 不会有效果,你输入参数的页面,你输入的是中文,此时默认用ISO-8859-1编码,也就是此时的汉字经过编码后再通过getBytes()不是适用了。仅供参考~
      

  9.   

    package com.first.struts.filters;import java.io.IOException;import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;public class SetCharacterEncodingFilter implements Filter {private String encoding;
    private FilterConfig filterConfig = null;public void destroy() {
       this.encoding = null;
       this.filterConfig = null;}public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {
       request.setCharacterEncoding(this.encoding);
       chain.doFilter(request, response);
    }public void init(FilterConfig filterConfig) throws ServletException {
       this.encoding = filterConfig.getInitParameter("encoding");
    }
    --------------------------------------------------------------------------------配置文件web.xml
         <filter>
       <filter-name>Set Character Encoding</filter-name>
       <filter-class>com.first.struts.filters.SetCharacterEncodingFilter</filter-class>
       <init-param>
        <param-name>encoding</param-name>
        <param-value>GBK</param-value>
       </init-param>
    </filter><filter-mapping>
       <filter-name>Set Character Encoding</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>