这样应该就没问题了
String xm=request.getParameter("na");          String tbrandtype= new String(xm.getBytes("ISO-8859-1"),"GB2312");   

解决方案 »

  1.   

    首先检查请求Servlet的JSP页面的编码是否为gb2312,
    如果编码一致仍解决不了问题,建议使用过滤器使用jsp过滤器的完整例子
      

  2.   

    在你的jsp页面上敲上
     <%
          response.setContentType("text/html;charset=gb2312");
          request.setCharacterEncoding("gb2312");
     %>
      

  3.   

    首先检查该java文件的编码格式,是否是GB2312,通过request获取值之后要进行转码,转码方法同1楼和3楼,两种方式,最简单的方法是写一个过滤器,这样就不用为每次请求进行转码了。
      

  4.   

    其实乱码的根源就是在各个页面的编码方式不一致造成的,你把所有要编码的地方都转换成UTF-8,包括数据库的编码方式也设置成UTF-8的,这样乱码方式就可以解决的。
      

  5.   

    由于Struts框架直接把表单数据发送给了ActionForm,所以这里面没有对HttpRequestServlet进行SetCharacterEncoding,所以默认是按照ISO-8859-1(参见Tomcat 源代码中的org.apache.catalina.connector.HttpRequestBase中的protected void parseParameters()方法),解决的方法,就是在表单提交到ActionForm之前对request进行编码。
    第一种方法,就是写一个过滤器,对所有请求进行过滤--------------------------------------------------------------------------------
    过滤器代码: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>
      </filter-mapping>-------------------------------------------------------------------------------- 第二种方法是替换默认的控制器org.apache.struts.action.ActionServlet --------------------------------------------------------------------------------
    子类代码:
    package jp.co.ricoh.gtis.others.profile.controllers; 
     import java.io.IOException;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionServlet;public class SetEncodingActionServlet extends ActionServlet { protected void process(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
      // TODO Auto-generated method stub
      String encoding = getInitParameter("encoding");
      request.setCharacterEncoding(encoding);
      super.process(request, response);
     }}-------------------------------------------------------------------------------- 配置文件web.xml
      <servlet>
        <servlet-name>testAction</servlet-name>
        <servlet-class>jp.co.ricoh.gtis.others.profile.controllers.SetEncodingActionServlet</servlet-class>
        <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>Shift_JIS</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
      </servlet>  <servlet-mapping>
        <servlet-name>testAction</servlet-name>
        <url-pattern>*.testdo</url-pattern>
      </servlet-mapping>此例,凡是通过*.testdo来请求的数据,都会经过参数encoding设定的值来编码。
      

  6.   

    这要看你传值的jsp页面的编码可以使用这个方法String xm=request.getParameter("na");   
    String newxm= new String(xm.getBytes("jsp页面的编码"),"要转换的编码");  这样newxm就显示问中文了。
     
      

  7.   

     String tbrandtype= new String(xm.getBytes("ISO-8859-1"),"GB2312");
      

  8.   

    页面加上
    <%@ page language="java" pageEncoding="gbk"%>
    就可以了
    最好统一用编码,你这个建议用GBK
      

  9.   

    顺序反了response.setContentType("text/html;charset=gb2312");
    response.setCharacterEncoding("gb2312");PrintWriter out=response.getWriter();这句在后面。。
      

  10.   

    post提交的乱码很好解决:
    在提取第一个参数之前加上一句:request.setCharacterEncoding("UTF-8");
    把你的文件编码方式全都改成UTF-8
      

  11.   

    在jsp页面中也应该设置中文字符:
    <%@   page   language= "java "   pageEncoding= "gbk "%> 
    另外,你在servlet中只是设置了response的中文字符,还应该把request设置一下中文字符!:
    request.setCharacterEncoding("gb2312");
      

  12.   

    最简单的方式就是:把数据库的编码和页面编码都改成:UTF-8 就不会出现乱码问题了。
      

  13.   


    如果不是post请求,还要这么转换。所以你把请求改成post就行了
      

  14.   

    就像1L,或者把编码格式设成Utf-8
      

  15.   

    就像1L,或者把编码格式设成Utf-8
      

  16.   

     String tbrandtype= new String(xm.getBytes("ISO-8859-1"),"GB2312");  
     
      

  17.   

    你的意思是返回参数xm、kl、sex显示为乱码吗?有点不清楚。如果是的话可以试一下下面的方法:首先,看一下你的输入上面参数的表单页面的ContentType里charset是那个编码。假设是gb2312。再到帖子里那个接收参数的servlet里,doPost里所有代码之前加上:httpServletRequest.setCharacterEncoding("gb2312");。注意,是request对象,而非response。再试一下。
      

  18.   

    先: response.setCharacterEncoding("gb2312");再: PrintWriter out = response.getWriter();
      

  19.   

    response.setContentType("text/html;charset=gb2312");