下面的代码我怎么做也不能正常显示,不知道是怎么回来,把设charset置成GB2312数据库中读的数据能正常显示但页的其它数据显示不正常,我把charset设置成GB18030页面是正常了,数据库中数据又不正常,我快气的不行了,各位大哥帮帮我吧<%@ page language="java" import="java.sql.*"  %>
<%@ page contentType="text/html; charset=gbk" %>
<% request.setCharacterEncoding("gbk"); %> 
<%
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   Connection con;
   con=DriverManager.getConnection("jdbc:odbc:zhou","","");
   ResultSet rs =null;
   String str="select * from sj";
   Statement stmt=con.createStatement();
   rs=stmt.executeQuery(str);
   StringBuffer sb=new StringBuffer();
   while(rs.next())
   {
      sb.append(rs.getString(1));
  }   
   if(con!=null)
   {
      con.close();
   }
%>
<html><head></head><body>
<p>zhou口若悬河</p>
<%=sb %>
</body></html>

解决方案 »

  1.   

    str=“为你要显示的中文”,str=str.getBytes("ISO8859_1");
      

  2.   

    多谢,
    我把String str;
    可是不行提示,如下类型错误
    An error occurred at line: 5 in the jsp file: /be.jsp
    Generated servlet error:
    Type mismatch: cannot convert from byte[] to String
      

  3.   

    <%@ page language="java" import="java.sql.*"  %>
    <%@ page contentType="text/html; charset=gbk" %>
    <%!
       public String GetChString(String str) {
            try {
                 String tempstring=str;
                 byte[] tempstr=tempstring.getBytes("ISO8859-1");
                 String temp=new String(tempstr);
                 return temp;
            }
            catch(Exception e) {
            }
            return "null";
       }
    %>
    <%
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       Connection con;
       con=DriverManager.getConnection("jdbc:odbc:zhou","","");
       ResultSet rs =null;
       String str="select * from sj";
       Statement stmt=con.createStatement();
       rs=stmt.executeQuery(str);
       StringBuffer sb=new StringBuffer();
       while(rs.next())
       {
          sb.append(GetChString(rs.getString(1)));
      }   
       if(con!=null)
       {
          con.close();
       }
    %>
    <html><head></head><body>
    <p>zhou口若悬河</p>
    <%=sb %>
    </body>
    </html>
      

  4.   

    StringBuffer sb=new StringBuffer();
    String line="";//我加的
       while(rs.next())
       {
          line=new String(rs.getString(1).getBytes("ISO8859_1"));//我加的
          sb.append(line);
      }   
      sb=sb.toString();//我加的
    我在你原代码上加的,你看看
      

  5.   

    用editPlus打开你的jsp页面,把charset设置成GB2312,然后点“另存为...”,选择编码为“GB2312”,重新保存你的jsp页面。在DreamWeaver中,在<head></head>中加上这么一行“<meta http-equiv="Content-Type" content="text/html; charset=gb2312">”可能起到同样效果。原理:当charset=gb2312,但浏览器浏览中文乱码,说明你的jsp页面可能是不以gb2312编码保存,比如以UTF-8编码保存。
    注意:虽然浏览器浏览乱码,但一些文本编辑器却能正确显示jsp文件中的中文,为什么?因为这些文本编辑器不以charset设置来判断jsp文件使用的字符集,而是采用智能的方式识别出jsp文件所用字符集,因此能正确显示jsp页面中的字符,而浏览器以charset设置中的错误字符集来显示页面,所以乱码。
      

  6.   

    可以设置
    response.setCharacterEncoding("GBK");
      

  7.   

    byte[] tempstr=tempstring.getBytes("ISO8859-1");
    改为:
    byte[] tempstr=tempstring.getBytes("gb2312"); 就OK了
      

  8.   

    <%@ page contentType="text/html; charset=gb2312" %>
    <% request.setCharacterEncoding("gb2312"); %>
      

  9.   

    不行啊
    我发现了一个问题如"中"字,在GB2312中的编码是"D6D0 ",到.JAVA文件就成了"E4B8" 到.CLASS中就成了"E6B6" 反正是进行了二次GB2312转UTF-8不知是怎么回事
      

  10.   

    说明的.java文件不是用GB2312编码保存的。任何字符集的.java文件编译成.class文件,其中的文字都会转换成unicode保存。
      

  11.   

    String s  = new String(tempstring.getBytes("ISO8859-1"),"gbk2312");
    tempstring 为数据库取出字符串,s为jsp中可以真确显示的值
      

  12.   

    sb.append(GetChString(rs.getString(1)).getBytes("ISO8859-1"),"GBK");
      

  13.   

    参考:把浏览器的默认编码方式改成UTF-8
      

  14.   

    <%@ page language="java" import="java.sql.*"  %>
    <%@ page contentType="text/html;charset=gb2312" %><%
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       Connection con;
       con=DriverManager.getConnection("jdbc:odbc:grade","","");
       ResultSet rs =null; 
       String str="select * from grade";
       Statement stmt=con.createStatement();
       rs=stmt.executeQuery(str);
       StringBuffer sb=new StringBuffer();   while(rs.next())
       {
          sb.append(rs.getString(1));
      }   
       if(con!=null)
       {
          con.close();
       }
    %>
    <html><head></head><body>
    <p>zhou口若悬河</p>
    <%=sb %>
    </body></html>
    把<%@ page contentType="text/html; charset=gbk" %>改为
    <%@ page contentType="text/html;charset=gb2312" %>;
    然后把<% request.setCharacterEncoding("gbk"); %> 去掉就可以了我在我的机子上这样做就可以,不知道你的机子怎么样?
      

  15.   

    : yanxiazhiqiu(if the words don't come my way...) 说的没错,"参考:把浏览器的默认编码方式改成UTF-8"不过数据库中的数据显示又不正常了,我现在是把浏览器的默认编码方式改成UTF-8",窗口数据正常数据库数据不正常,浏览器的默认编码方式改成GU2312"数据库数据显示正常可窗口数据又不正常了
      

  16.   

    我找到了出错的地方,可还是不知道怎么解决,我的JSP源文件是用GB2312保存的,TOMCAT把它编成JAVA文件是用UTF-8文件保存的,最把JAVA文件当做GB2312格式编成CLASS文件(在这一步的会出错,因为JAVA文件是UTF-8的),怪了各位兄弟帮帮我啊!
      

  17.   

    csdn上有篇现成的文档啦,读了这个你就明白了:)
    http://kb.csdn.net/java/Articles/200511/82489e2c-5ff8-4bfe-91ee-4343162c489e.html