如何解决Oracle常用客户端Toad/SQL Plus 汉字乱码问题?

     Oracle 客户端出现中文乱码的主要原因是字符集不同。在Oracle中,应关注三个地方的字符集: 

     先来查看一下数据库字符集: 

     在Oracle中可能使用

          Select userenv('language') from dual;   或者:

          Select name, value$ from props$;   查看。 

    1 Oracle服务器内部的字符集 

    修改方法: 

   connect sys/chang_on_install 

   update props$ set value$='TRADITIONAL CHINESE_TAIWAN.AL32UTF8'where name='NLS_CHARACTERSET'; 

   commit; 

    2 NLS_LANG变量里保存的字符集 

    这个是Oracle设置的一个变量。在Windows中,这个变量保存在注册表中: 

    HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 保存着NLS_LANG变量。 

    在Unix/Linux中,则需要自己进行设置,在.profile里面加上

    NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 

    export NLS_LANG 

    3 客户端应用的字符集 

    下面是我用到的字符集 

    american_america.AL32UTF8 

    TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950 

    TRADITIONAL CHINESE_TAIWAN.AL32UTF8 

    AMERICAN_AMERICA.WE8ISO8859P1 

   AMERICAN_AMERICA.ZHS16GBK 

   特别注意:如果服务端编码为AL32UTF8,那么客户端就应该安装自己环境来设置字符编码。 

    比如我有一个服务器端,其中两个客户端一个为简体,一个为繁体: 

   服务器端字符集设置:american_america.AL32UTF8 

   简体客户端字符集设置:AMERICAN_AMERICA.ZHS16GBK 

   繁体客户端字符集设置:TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950 

   这样toad和sqlplus不论在繁体还是简体都可以正常显示汉字了。