Oracle 8i更新相关类型中出现乱码问题的解决 |
本文标签:Oracle 8i Oracle 8i在更新中包含varchar2和date类型的相关记录时varchar2会出现乱码问题,虽然Oracle 8i以前就被人使用,现在用的人并不占多数,但是毕竟还是有一部分的人在用的,比如遇到乱码等相关问题的介绍 。 问题描述: 环境:windows XP,Oracle 8i 8.1.6.0.0 问题:使用JDBC连接数据库,在同时更新一个包含varchar2和date类型的记录时,某个varchar2会出现乱码,无论英文还是中文,并且还有可能同一个字段前半部分乱码后半部分不乱码 。同样的sql语句,使用sqlplus执行就没有问题 。 问题解决: 首先,用DBA的权限执行下面的语句: select tab1.aa||_||tab2.bb||.||tab3.cc from (select VALUE$ aa from sys.props$ where name=NLS_LANGUAGE)tab1,(select VALUE$ bb from sys.props$ where name=NLS_ISO_CURRENCY)tab2,(select VALUE$ cc from sys.props$ where name=NLS_CHARACTERSET)tab3 在Oracle 8i运行中要更新复制上面语句的执行结果,在我的机器上执行的结果是:AMERICAN_AMERICA.ZHS16GBK打开注册表,找到HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0,找到NLS_LANG,双击,将数值数据改为刚复制的那个 修改完注册表,重启机器 。在这里可能有一些问题,首先如果你的ORACLE不是一次安装成功的,那么可能有HOME0,HOME1等,在我的经历中,首先将HOME1中的NLS_LANG改了,但是问题依旧,然后将HOME0中改了,问题才解决,所以改的时候把所有的HOMEX中NLS_LANG的都改了吧,如果没有就新建一个 。 其次,单改注册表可能还会出现问题,这时候就要改jdbc驱动了,不要用那些10g,9i,8i通吃的驱动,去oracle安装目录中的jdbc目录找,用这里的驱动问题解决 。 以上就是对Oracle 8i更新包含varchar2和date类型的记录时varchar2乱码的相关内容的介绍,望你会有所收获 。 |