Oracle客戶端toad漢字亂碼解決方法

bluelight發表於2011-09-01
出現中文亂碼的主要原因是字符集不同。在Oracle中,我們關心三個地方的字符集:

先來檢視一下資料庫字符集:
在Oracle中可能使用Select userenv('language') from dual;或者:Select name, value$ from props$;檢視。

l 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_MACHINESOFTWAREORACLEHOME0 儲存著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不論在繁體還是簡體都可以正常顯示漢字了。[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1724534/viewspace-1054669/,如需轉載,請註明出處,否則將追究法律責任。

相關文章