1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

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目录找,用这里的驱动问题解决。

本文来源:1818IP

本文地址:https://www.1818ip.com/post/11980.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。