对于mysql,sqlserver,interbase等数据库的jdbc旧版本都存在这样的问题。你可以更新你的数据库驱动来达到目的,当然也可以用下面的手段:具体原因是jdbc驱动里面使用了native编码,而我们的java程序则是unicode编码,所以我们需要进行转换。String native2unicode(String s) {
  return new String(s.getBytes("iso-8859-1"),"gbk")
}
native2unicode(rs.getString(1));当然在写入数据库的时候要进行相应的反向的unicode2native转换。

解决方案 »

  1.   

    不好意思,不能给分,因为我说了,我无法改java源码,另外也无法改数据库的连接,它不是用jdbc而是一个嵌入式数据库,而且只用它自己的java API来操作数据库,我能改的只有jsp页面,谢谢!
      

  2.   

    在JSP页面也可以改阿???
    String native2unicode(String s) {
      return new String(s.getBytes("iso-8859-1"),"gbk")
    }
    native2unicode(rs.getString(1));这个也可以嵌在页面上...不过不是最好的办法...
      

  3.   

    <%!  
    private static String getC(String strvalue)
    { try{if(strvalue==null)
          return null;
          else{strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK");
                return strvalue;}
             }catch(Exception e){return null;}
    }
    %>
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.util.*,java.text.*"  %>
    从页面取出的参数,经过上述getC处理后入库
      

  4.   

    str=new String(str.getBytes("ISO8859_1"), "GBK");
      

  5.   

    你可以试一下astr=res.getString(1);
    str=new String(astr.getBytes("ISO8859_1"), "gb2312");
      

  6.   

    if (str != null) str = new String(str.getBytes("iso-8859-1"),"gb2312");
      

  7.   

    楼上说得没错,请按照以下两种方法转换,
    TOMCAT:str = new String(str.getBytes("8859_1"), "GB2312")
    WebSphere:str = new String(s.getBytes("ISO-8859-1"), "gb2312")
    依此类推!
    你好好试试吧!:-)
      

  8.   

    <%=new String(sqlRst.getString("字段名").getBytes("ISO-8859-1"),"GBK")%>
      

  9.   

    String str=new String(request.getPareter("test").getBytes("ISO8859_1"));
      

  10.   

    那你能看库和bean吗~看看~你存到库里的是不是就是乱码~~看看你的bean里试不试已经用了转换函数~~~~~~上面的都对~看你在那里用~怎么配合这用了~
      

  11.   

    str=new String(str.getBytes("ISO-8859-1"), "GBK");用这句很管用呀,我们现在的项目都是这样做的,都没问题,不过,一般是在哪取出数据,就在那进行转换成正确格式的文本,这样节省编码,特别是在多个地方要用到的时候。
      

  12.   

    大家说得都对,我重复的贴一下:
    对于要显示的页面,前面加<%@ page contentType="text/html; charset=GB2312" %>
    对于要存入数据库的字符串变量,在往数据库里面写之前,用下面的方法转换一下;其他的不要管就OK了
    <%!
    public String getStr(String str){
    try{
    String temp_p=str;
    byte[] temp_t= temp_p.getBytes("ISO8859-1");
    String temp = new String(temp_t);
    return temp;
    }catch(Exception e){
                   return null; }
    }
    %>