我用的数据库为oracle9i。数据库的字符集设置为:ZHS16GBK。数据库中,一个表中某个字段的内容为繁体字,字段类型为varchar2类型。我用toad8.0去访问数据库的数据时,该记录能够正常的显示繁体字。但是,我用9i带的thin驱动去读数据库的该记录时,就会读出?号。在网上找了很多文章,也没有找到个解决的办法,特来向大家请教!就是在执行rs.getRecord(i).getString("字段名")这句时,如果该字段的内容全部为中文简体或者是英文,则都正常。但只有是繁体就会出来?号。象这个情况该怎么解决?

解决方案 »

  1.   

    你这种情况,安装数据库的时候,最好把数据库编码设置为UNICODE.
      

  2.   


    修改字符集:
    用SYS用户登陆
    SQL> SHUTDOWN IMMEDIATE; -- or NORMAL
    <do a full backup>
    SQL> STARTUP MOUNT;
    SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
    SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
    SQL> ALTER DATABASE OPEN;
    SQL> ALTER DATABASE CHARACTER SET <new_character_set_name>;//ZHS16GBK支持中文简体或者 US7ASCII
    SQL> SHUTDOWN IMMEDIATE; -- or NORMAL
    SQL> STARTUP;
      

  3.   

    问题是用TOAD这样的工具去数据库查的时候,显示是正常的。只是用JDBC取出来的时候显示不正常。如果是数据库的字符集设置不对的话。应该写进去的时候,显示就不正常呀。顺便说一句,写入数据库是另外一个程序写入的。他用的weblogic的jdbc的连接池方式进行数据库操作。