new String(xx.getBytes("gbk","iso-8859-1")); 写反了吧

解决方案 »

  1.   

    连接时需要设置字符集编码
    int   oracleId   =   CharacterSet.ZHS16GBK_CHARSET;  
    CharacterSet   dbCharset   =   CharacterSet.make(oracleId);  
       
    DriverManager.registerDriver(new   oracle.jdbc.driver.OracleDriver());  
       
    Connection conn =  DriverManager.getConnection  
                                                    ("jdbc:oracle:thin:@127.0.0.1:1521:db01",  
                                                      "XX",  
                                                      "XX");  
       
    Statement   stmt   =   conn.createStatement();  
    试试是否可以。
      

  2.   

    我是用spring 管理数据源的,jdbc方式,调用了存储过程。oracle  数据库  字符集 us7ascii. 
    我应该要怎么做,搞了几天了,都没搞定。快疯了。
    大家快来看看,回答有分,不够再加。
      

  3.   

    String s = new String(xx.getBytes("iso-8859-1"),"gbk");
    debug下看看s是否乱
      

  4.   

    数据库 服务器 页面
    全设置 UTF-8
    基本不用考虑 中文问题了
      

  5.   

    插入数据库前是不是乱码的?你要确定下是从那个地方开始乱的才行,各个地方都System.out.println下,先分析哪的问题,没乱的地方没必要贴出来也没必要改.至于你是否有写反编码还要具体问题具体分析才行,不能一概而论.
      

  6.   

    设置了过滤器后 从form里读 显示正常汉字,不转码直接插入数据库后就是乱码了,如果转码 打印出来,是乱码。
      

  7.   

    不转码直接插入数据库后就是乱码了
    这里说的是直接到数据库中看,还是取出后看?如果只是应用要看,你可以这样处理:
    连接数据库的连接语句中指定字符集,或者全部以UTF-8插入,取出,应该可以的。
      

  8.   

    我的意思,在设置了过滤器后 从action 里打印出来是 中文,插入数据库后 查看就是乱码了,
    我插入数据库的时候就是不能是乱码,如果是乱码,就玩完了。
      

  9.   

    1 我先描述下我对你问题的理解插入数据库前也就是insert执行前不是乱码的
    2 库现在的编码是us7ascii,是不可以修改的
    3 us7ascii是单字节编码,而汉字是双字节的编码,应该是必然乱码的
    4 插入的时候是乱码没关系,现在你测试下取出来的时候可不可以把乱码转换下,从数据库取的时候使用String s = new String(xx.getBytes("iso-8859-1"),"gbk");这里的xx是你从数据库里面取出的字符串,如果显示正常算成功了.
    5 如果第4步你成功了看第6步,如果第4步没成功,在向数据库插入前先转换为单字节编码new String(xx.getBytes("gbk","iso-8859-1"));
    6 我实在想不出你为什么使用us7ascii编码,你可以在现有数据库的基础上进行修改的,以你现在的程序环境我建议你将库修改为zhs16GBK编码  
    7 倒库的方法
    7.1 EXP前将注册表中...\ORACLE\HOME\NLS_LANG的键值改为ZHS16GBK 
    ,再进入EXP ,用EXP时的用户IMP数据。
    7.2直接导出后使用UltraEdit修改 dmp文件的前6个字节为03.03.54zhs16GBK     US7ascII   
    03.03.54     00.00.01       
    你目前导出的文件前6个字节应该为00.00.01
    8 祝你好运!
      

  10.   

    哎,昨天问题终于定位了。谢谢大家关心。
    我调用了一存储过程。入参定义为nvarchar2了产生了乱码,改成varchar就好了。
    结帖。