我win7下安装oracle10g 服务器端,数据库字符集设置为: AL32UTF8
安装完毕后,我sqlplus 登录正常显示中文
接着我安装plsql developer, 登录时提示客户端和数据库端字符不一致
执行select * from emp;(因为我没有安装scott模式,没有这个表) 
提示错误是乱码!
然后我修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1
有个nls_lang 这个里面的值SIMPLIFIED CHINESE_CHINA.ZHS16GBK
改成为:SIMPLIFIED CHINESE_CHINA.AL32UTF8
在plsql里登录是乱码,在sqlplus登录也是乱码
后面我有在环境变量中设置nls_lang=SIMPLIFIED CHINESE_CHINA.AL32UTF8
结果还是乱码
我在保留服务器端数据库字符集AL32UTF8情况下
该怎么设置才能解决乱码问题?

解决方案 »

  1.   

    2句话搞定客户端和服务器字符集不一致 
      a.查询服务器端配置的字符集。在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;   
        
      b.在客户端的注册表HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0中,如无系统变量NLS_LANG,则“新建”->“字符串”,重命名为“NLS_LANG”,并赋值为上述查询变量的值(注意引号内的字符应大写),再查看时不需要重启Oracle。
      

  2.   

    注册表先修改成:AMERICAN_AMERICA.AL32UTF8 试一下会正常提示英文吗?
      

  3.   

    我改成你说的了,可以显示英文C:\Windows\system32>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on Mon Dec 27 21:19:03 2010Copyright (c) 1982, 2005, Oracle.  All rights reserved.SQL> conn system/system as sysdba;
    Connected.
    SQL> select userenv('language') from dual;USERENV('LANGUAGE')
    ----------------------------------------------------
    AMERICAN_AMERICA.AL32UTF8SQL>
    但是我在改成SIMPLIFIED CHINESE_CHINA.AL32UTF8后运行就是乱码。C:\Windows\system32>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 鏄熸湡涓€ 12鏈?27 21:17:15 2010Copyright (c) 1982, 2005, Oracle.  All rights reserved.SQL> conn system/system as sysdba;
    宸茶繛鎺ャ€
    SQL> select userenv('language') from dual;USERENV('LANGUAGE')
    ----------------------------------------------------
    SIMPLIFIED CHINESE_CHINA.AL32UTF8SQL>