转换就ok了。 从数据库里取出来的数据转换成GBK了。 没办法的。 
我也遇到过。

解决方案 »

  1.   

    转换可以实现,但我存在数据库中为16进制码,例如“CDA4”,取出再转换
    感觉很别扭。并不能new String("".getBytes("GBK"),gb2312)这种方式来转换
    前者如果人家用数据库客户端工具查出来,还以为CDA4就是数据本身。
      

  2.   

    String str = new String(rs.getString("XXX").getByte("UTF-8"));
    然后再转成GBK吧……
      

  3.   

    xuliduo,数据库字符集gb2312,取值用getByte("UTF-8"))不行噢
      

  4.   

    可以啊…rs.getString("XXX").getByte("UTF-8")得到的是一个流数组……
      

  5.   

    xuliduo:不知道你有没有注意以下两个方面,
    <1> oracle字符集用的gb2312
    <2> 测试的汉字包含在GBK中但不在gb2312中。
    我贴上一段代码如下,方便大家讨论,以下代码是不成的
    ------------------------------------------------
            String ss = "蔄";
            System.out.println("ss>"+ss);        
            stmp = conn.prepareStatement
             ("INSERT INTO TEST (   ID, NAME,ADDR2) VALUES(2,'2',?)");
            stmp.setString(1,new String(ss.getBytes("GBK"),"UTF-8"));
            //stmp.setString(1,ss);  不转会有问题
            stmp.execute();
            String sql = "select addr2 from test order by id desc";
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                String s3 = rs.getString(1);
                System.out.println(".."+new String(s3.getBytes("UTF-8"),"GBK"));
            }
      

  6.   

    用客户端工具,通过更改客户端字符集编码与数据库一样采用gb2312,
    然后插入 "蔄"这个GBK的字,查询显示竟然正确。说明oracle没有对
    此进行转换。
    JAVA中编译然后运行应该是会转来转去的,可有解决方案呢?大家再
    继续讨论呀
      

  7.   

    偶还真没注意过……不过偶记的oracle提供了一个字符转换的包,恩,应该叫字符设置……偶没用过,不过网络上应该有这方面的资料~这个jar包应该也是随oracle一起提供的