以Oracle8i数据库字符集乱码问题的分析与解决
SQL工作表是窗口图形界面的SQL语句编辑器。那些喜欢窗口界面,用户界面的用户,该工具是比较流行的SQL / plus.but从Oracle 8i数据库,如Oracle 8i安装在集我们中国的英文字符,通常选择简体中文字符集(zhs16gbk),其安装成功后,运行SQL加表程序,有将所有的中文显示和查询结果是乱码的情况。
两。问题分析
首先,有人怀疑安装时字符集的设置是有问题的,也就是说,没有设置正确的简体汉字集。首先检查数据库字符集,然后用SQL语句运行下面的SQL语句来检查连接数据库的字符集:
查询结果显示选定的字符集是简体中文zhs16gbk当数据库安装安装,说明字符集的设置完全正确安装时,第二步是客户开始怀疑字符集,检查注册表客户端,打开注册表编辑器(注册表),在hkey_local_machine / / / nls_lang Oracle软件,发现Oracle客户端字符集是american_america.zhs16gbk,是完全正确的,可以排除作为客户端字符集错误的问题。同时,另一个现象是,查询字符集的SQL /加完全是正常的在同一个客户机,这表明它不是性的问题ER设置,但是系统程序的问题。
Oracle 8i在以前的版本中,从未有过这样的情况,它应该是对Oracle的版本有关,我们知道Oracle 8i及以前的版本,现在大多数使用Oracle系统程序,java程序差异,事实上这是产生乱码字符集的基本点。非java驱动程序,如SQL * Plus,具有系统参数nls_lang,这是环境变量在Unix系统设置,并设置在Windows操作系统注册表。这个参数决定设置客户端应用程序的特征,基于java的应用程序,如SQL * Plus的工作表,现在遇到的nls_lang参数不在这样的程序中发挥任何作用。
三。解决
在找到问题的原因,下面就来讨论一下如何解决这个问题。所有的工具在Oracle企业管理器,有一个叫dbappscfg.properties配置文件,修改文件来解决上述问题。这个文件的位置是在$ oracle_home SysMan 配置目录,这是打开任何文本编辑器。在这个文件中,我们找到这样的文件。
删除注释符#,并改变它sqlplus_nls_lang = american_america.zhs16gbk。
对于Windows操作系统,还需要修改一个sqlplus_systemroot = C: winnt40,在文件中找到#,删除注释符号,改变它对你的计算机的操作系统的主要目录。如果操作系统的主目录是D盘WINNT下,它是修改sqlplus_systemroot = D: WinNT。
对下一个项目的更改只在Windows操作系统上执行,并且不需要UNIX操作系统。如果您不在Windows操作系统中修改此项,在Oracle企业管理器中,系统连接时将提示以下错误:
或
修改完成后,保存文件并退出编辑器,重新连接sql加工作表,解决字符集无序问题,并显示正确的简化汉字集。