Oracle 8i字符集乱码问题析及其解决办法

超级小家碧玉

超级小家碧玉

2016-02-19 11:15

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享Oracle 8i字符集乱码问题析及其解决办法的教程,热爱PS的朋友们快点看过来吧!
正在看的ORACLE教程是:Oracle 8i字符集乱码问题析及其解决办法。一、问题描述

  SQL Plus WorkSheet是一个窗口图形界面的SQL语句编辑器,对于那些喜欢窗口界面而不喜欢字符界面的用户,该工具相对SQL/PLUS受到了很大的欢迎。但从Oracle 8i以后,如果安装Oracle 8i时选取的是别于英语的字符集,对于我们中国,通常会选取简体中文字符集(ZHS16GBK),安装成功后,运行SQL Plus WorkSheet程序,会出现所有的中文显示以及查询结果均为乱码的情况。

  二、问题分析

  最初出现该问题,首先怀疑就是安装时字符集设置有问题,也就是说没有设置正确的简体中文字符集。首先检查数据库字符集,在SQL/PLUS中,运行下面的SQL语句,检查所连接数据库的字符集:


  查询结果发现数据库安装时所选字符集为简体中文ZHS16GBK,说明安装时字符集设置完全正确。第二步开始怀疑是用户客户端字符集问题,检查客户端注册表,打开注册表编辑程序(RegEdit),在HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/NLS_LANG,发现Oracle客户端字符集为AMERICAN_AMERICA.ZHS16GBK,设置也完全正确,可以排除是客户端字符集设置错误的问题。同时还有一个现象就是在同一个客户端机器上SQL/PLUS中的查询字符集显示完全正常,这也说明不是字符集设置问题,而是系统程序SQL/Plus Worksheet的问题。

  在Oracle 8i以前的版本中,从来没有出现过这样的情况,这应该和Oracle版本有关,我们知道Oracle 8i和它前面的版本一个显著的区别就是大部分的Oracle系统程序,现在均采用Java驱动,其实这也就是产生字符集乱码问题的根本所在。非Java驱动的程序,如SQL*Plus,有一个系统参数NLS_LANG,该参数在UNIX系统中设置在环境变量中,在Windows操作系统中设置在注册表中,这个参数决定了客户端应用程序的字符集。而对于基于Java应用的程序,如现在遇到的SQL*PLus Worksheet,NLS_LANG参数对这类程序是不起任何作用的。

  三、解决方案

  找到了问题产生的原因后,下面来讨论如何解决该问题。对于Oracle Enterprise Manager中的所有工具,有一个配置文件名为dbappscfg.properties,修改该文件即可解决上述问题。这个文件的位置在$ORACLE_HOMEsysmanconfig目录下,用任何的文本编辑器打开该文件,在这个文件里面,找到这样一项,


  去掉注释符#,同时将其修改为SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK。

  对于Windows操作系统,还需要修改一项,在文件中找到# SQLPLUS_SYSTEMROOT=c:\WINNT40,去掉注释符,将其修改为你所在机器的操作系统主目录。如操作系统的主目录在D盘的Winnt下,则将其修改为 SQLPLUS_SYSTEMROOT=d:\WINNT。

  对于后面一项的修改只对Windows操作系统进行,对UNIX操作系统则不需要。如果在Windows操作系统中不修改该项,在Oracle Enterprise Manager中,连接系统时,会提示如下的错误:


  或者 


  修改完成后,保存文件,退出编辑。重新连接SQL PLUS Worksheet,字符集乱码问题得到解决,显示正确的简体中文字符集。 

展开更多 50%)
分享

猜你喜欢

Oracle 8i字符集乱码问题析及其解决办法

编程语言 网络编程
Oracle 8i字符集乱码问题析及其解决办法

Oracle 8i中字符集乱码问题析及其解决办法

编程语言 网络编程
Oracle 8i中字符集乱码问题析及其解决办法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Oracle Faq(Oracle的字符集问题)

Web开发
Oracle Faq(Oracle的字符集问题)

影响Oracle汉字显示的字符集问题

编程语言 网络编程
影响Oracle汉字显示的字符集问题

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Oracle 8i迁移到10g出现的问题及解决

编程语言 网络编程
Oracle 8i迁移到10g出现的问题及解决

HTML 字符集

Web开发
HTML 字符集

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

发现mysql一个用法比较有用

发现mysql一个用法比较有用

SuperSocket 信息: (SpnRegister) : Error 1355解决方法

SuperSocket 信息: (SpnRegister) : Error 1355解决方法
下拉加载更多内容 ↓