服务器端是这样的
NLS_CHARACTERSET
ZHS16GBK我将注册表中的HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE的NLS_LANG改成了SIMPLIFIED CHINESE_CHINA.ZHS16GBK,但是还是不成.

解决方案 »

  1.   

    你在服务器上执行下面的语句:
    select userenv('LANGUAGE') from dual;将结果贴到客户端注册表里面(记得所有的该贴的地方都贴一遍)
      

  2.   

    SQL> select userenv('LANGUAGE') from dual;USERENV('LANGUAGE')
    ---------------------------------------------
    SIMPLIFIED CHINESE_CHINA.US7ASCII
    然后,我在注册表中查找NLS_LANG,将它们的制值都改成SIMPLIFIED CHINESE_CHINA.US7ASCII。再insert一条,可是显示的中文还是???.这该如何是好?
      

  3.   

    我用sqlplus可以显示中文字段,但是sqlplus的提示去变成了乱码。DBA Stadio依然显示不正常,我想还是要修改服务器端的字符基,但是服务器端的props$的NLS_CHARACTERSET早就被我改成ZHS16CGB231280了,为何select userenv('LANGUAGE') from dual;还是SIMPLIFIED CHINESE_CHINA.US7ASCII,用的还是"US7ASCII"呢,难道没改对地方?
      

  4.   

    服务器和客户机的字符集都应该采用ZHS16GBK
      

  5.   

    我将props$的NLS_CHARACTERSET改成ZHS16GBK,并把注册表中的NLS_LANG全改成SIMPLIFIED CHINESE_CHINA.ZHS16GBK,可是,现在连sqlplus也不显示中文了。我的服务器的环境变量NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK,这个有影响吗?
      

  6.   

    经过大家的帮助我终于搞好了。:)
    现在总结如下:
    1.设置系统变量NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"; (最好是用oracle用户登陆服务器,修改/home/oracle/.bash_profile文件).
    2.在客户端(Windows)注册表中搜索NLS_LANG,将它也改为"SIMPLIFIED CHINESE_CHINA.ZHS16GBK"(没有引号).
    3.修改sys.props$表:
        NLS_CHARACTERSET = 'ZHS16GBK'
        NLS_LANGUAGE = 'SIMPLIFIED CHINESE'
        NLS_TERRITORY = 'CHINA'
        NLS_NCHAR_CHARACTERSET = 'ZHS16GBK'
    4. ok 了;:)
      

  7.   

    http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=140988
      

  8.   

    多谢beckhambobo(beckham)的补充。d:)