修改注册表中HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0中NLS_LANG为:
AMERICAN_AMERICA.WE8ISO8859P1,即可。

解决方案 »

  1.   

    BlueskyWide(谈趣者)兄说的是一个方面
       修改注册表中HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0中NLS_LANG为: 
       AMERICAN_AMERICA.WE8ISO8859P1,
       
       2。还要以SYSTEM/MANAGER帐号登陆,修改PROPS$系统表的数据,因为ORACLE都是根据
          这个表的VALUE$字段的值来判断内部字符级的,在SQLPLUS下发
          UPDATE SYS.PROPS$ SET VALUE$='WE8ISO8859P1' WHERE NAME LIKE 'NLS_CHAR%';
       重新启动即可。
       如还存不了中文,再来探讨,是可以解决的
      

  2.   

    谢谢两位的指点,我有些情况没有说清楚,还请帮忙看一下:服务器上的Oracle8.1.6是英文字符集,但是服务器上的Oracle是绝对不能改动的——或者说:我是无法接触到服务器的而我在客户端用delphi开发,想将中文的数据存入服务器上的Oracle服务器中。客户端装的是Oracle8.1.6,不过是中文字符集。
    请问有解决的办法吗?
    谢谢
      

  3.   

    在服务器在刚才的注册表目录下
    和客户端的刚才的注册表目录下
    把nls_lang改为相同就可以吧!
    我这里两面边都是SIMPLIFIED CHINESE_CHINA.ZHS16GBK
      

  4.   

    对于Oracle Enterprise Manager中的所有工具,有一个配置文件名为dbappscfg.properties,修改该文件即可解决上述问题。这个文件的位置在$ORACLE_HOME\sysman\config目录下,用任何的文本编辑器打开该文件,在这个文件里面,找到这样一项,
    # SQLPLUS_NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 
    去掉注释符#,同时将其修改为SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK。
    对于Windows操作系统,还需要修改一项,在文件中找到# SQLPLUS_SYSTEMROOT=c:\\WINNT40,去掉注释符,将其修改为你所在机器的操作系统主目录。如操作系统的主目录在D盘的Winnt下,则将其修改为 SQLPLUS_SYSTEMROOT=d:\\WINNT。
    对于后面一项的修改只对Windows操作系统进行,对UNIX操作系统则不需要。如果在Windows操作系统中不修改该项,在Oracle Enterprise Manager中,连接系统时,会提示如下的错误:
    ORA-12560 TNS:protocol adapter error 
    或者 
    ORA-12545 Connect failed because target host or object does not exist 
    修改完成后,保存文件,退出编辑。重新连接SQL PLUS Worksheet,字符集乱码问题得到解决,显示正确的简体中文字符集。