有中文的地方用转中文函数转一下 public String getStrcn(String str){
  if(str==null){
  str="";
  }
  else{
  try{
  str=new String(str.getBytes("iso-8859-1"),"gb2312");
  }
  catch(Exception ex){
  }
  }
  return str;
  }
out.println(getStrcn(name));

解决方案 »

  1.   

    你只要用<%@page contentType="text/html;charset=GB2312"%> 就OK了
      

  2.   

    name=new String(name.getBytes("gb2312"),"ISO8859_1");
      

  3.   

    数据库中的数据不是乱码,我用“foolfish(呆鱼)”的方法后提示出错了。Generated servlet error:
    D:\Apache Tomcat 4.0\work\Standalone\localhost\_\searchout$jsp.java:198: 需要语句。
                     public String getStrcn(String str)
                     ^
      

  4.   

    在数据存入数据库前,先用 out.println 测试一下,确定在存入数据库前,字符显示正常。在数据存入数据库时,要进行字符转换!
      

  5.   

    用str=new String(request.getParameter("wubie").getBytes("ISO-8859-1"),"GB2312");把转换后的字符串str插入数据库,然后取出就行了(采用类似<%=bean.getData("列名")%>的方法取出数据。)
      

  6.   

    支持:先确定数据库中的数据是否乱码
    如果数据库中是乱码说明你添加时就没处理好编码,你应该首保证数据库中是中文编码。然后读出时就简单了。<%@page contentType="text/html;charset=GB2312"%>
    不可少,
    然后把从数据库中读出的汉字转换编码就可以了。
    至于怎么转换编码,函数很多,一堆一堆的。
    如果不明白再来论坛问问。
      

  7.   

    我也遇到过同样的问题,好像不是数据库的问题
    应该是tomcat设置的问题,需要设置web.xml,不过我没搞定
    我暂时使用输出英文,一点思路,仅供参考。
    解决后麻烦通知我一声,谢谢
      

  8.   

    tomcat4.1.18要好用点,下面是我的解决,希望对你有帮助
    在jsp里
    <%@ page contentType="text/html;charset=iso8859_1"%>
    <%response.setContentType("text/html;charset=iso8859_1");%>在html的<head></head>里
    <meta http-equiv="Content-Language" content="zh-cn">
    <meta http-equiv="Content-Type" content="text/html; charset=GB2312">JavaBean里的函数
      //把数据库中取得的结果转化--显示汉字 
      public String GS(String str)
      { try
         { String temp_p=str;
           byte[] temp_t=temp_p.getBytes("GBK");
           String temp=new String(temp_t,"ISO8859_1");
           return temp;
          }
        catch(Exception e) { return "null";} 
      }  //入库前把表单中提交的中文进行转换
      public String toGB(String iso)
      { String gb=null; 
        if (iso != null)
        { try { gb=new String(iso.getBytes("ISO8859_1"),"GB2312"); } 
          catch (Exception e) { gb=null; } 
        } 
        return gb; 
      }另外,编译javabean时建议这样:
    jc.bat 存到JDK\bin目录
    javac -classpath d:\rpc\WEB-INF\classes -encoding iso8859_1 %1
      

  9.   

    改web.xml的内码设置,如utf-8改为gb2312
      

  10.   

    可是我的数据是直接在SQL server 2000里写的。
      

  11.   

    我的可以了!大家看看!
    要给分哦!
    import javax.servlet.*;
    import java.io.*;
    public class Myserver extends GenericServlet{
        public void  service(ServletRequest request,ServletResponse response)
    throws ServletException,IOException{
            response.setContentType("text/html");
    PrintWriter pw=response.getWriter();

                pw.println("<%@ page contentType='text/html;charset=GB2312' %>");
    //pw.println("<%response.setContentType('text/html;charset=GB2312');%>");
    //System.out.println("<B>妈妈最最喜欢吃的东西:</B>");
    pw.println("<html>");
                pw.println("<body>");
    pw.println("<center>");
    pw.println("<form name='Form1' method='post' action='http://localhost:8080/servlet/Myserver'>");
                pw.println("<B>");
                try{ 
                   pw.println(new String((new String("妈妈最最喜欢吃的东西:")).getBytes("GBK"),"ISO8859_1"));
                   pw.println("</B>");
       pw.println("<select name='favourate' size='1'>");
                   pw.println("<option value='xiangjiao'>" + new String((new String("香蕉")).getBytes("GBK"),"ISO8859_1") + "</option>");
       pw.println("<option value='xiangjiao'>" + new String((new String("苹果")).getBytes("GBK"),"ISO8859_1") + "</option>");
       pw.println("<option value='xiangjiao'>" + new String((new String("山楂")).getBytes("GBK"),"ISO8859_1") + "</option>");
       pw.println("<option value='xiangjiao'>" + new String((new String("巧克力")).getBytes("GBK"),"ISO8859_1") + "</option>");
       pw.println("<option value='xiangjiao'>" + new String((new String("其他")).getBytes("GBK"),"ISO8859_1") + "</option>");
       } 
                   catch( UnsupportedEncodingException e) 
                   { 
                   } 

    //try{ 
                //   pw.println(new String((new String("妈妈最最喜欢吃的东西:")).getBytes("GBK"),"ISO8859_1"));
                //   
    //   } 
                //   catch( UnsupportedEncodingException e) 
                //   { 
                //  } 
    //pw.println("<option value='xiangjiao'>香蕉</option>");
    //pw.println("<option value='pingguo'>苹果</option>");
    //pw.println("<option value='shanzha'>山楂</option>");
    //pw.println("<option value='qiaokeli'>巧克力</option>");
    //pw.println("<option value='qita'>其他</option>");
    pw.println("</select>");
    pw.println("<br><br>");
    pw.println("<input type=submit value='Submit'>");
    pw.println("</form></body></html>");
    pw.close();
    }
    }
    //<%@ page contentType="text/html;charset=iso8859_1"%>
    //<%response.setContentType("text/html;charset=iso8859_1");%>
    /*
    try{ 
    out.println(new ( (new String("我爱死你了")).getBytes("GBK"),"ISO8859_1")) 

    catch( UnsupportedEncodingException e) 

    } */
      

  12.   

    上面的代码是可以的
    但是要记住,从数据库中度数据的时候不要调用该代码,否则独处的数据是乱码
    但是往数据库中存入中文的时候就一定要调用该函数。
    一般是iso8859-1和gb2312只见的转换