Oracle SQLPLUS 無法正常顯示中文
在Linux中,使用SQLPLUS登入Oracle時,如果出現無法變是中文字的問題,
很有可能是因為系統沒有設定環境變數所導致。
測試環境:
- OS: CentOS Linux 6.4
- DB: Oracle Database Express Edition 11g Release 2
首先,先確認是否是因為沒有設定環境變數所導致,試著輸出$NLS_LNAG的值:
一片空白!!
因此目前得先找出NLS (NLS=National Language Support) 的編碼,
並將其設定在系統的環境變數中。
接下來,我們登入SQLPLUS,執行下句查詢目前的Character Set:
1 |
select userenv('language') from dual; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[oracle@localhost ~]$sqlplus /nolog SQL*Plus: Release 11.2.0.2.0 Production on Wed Sep 25 09:08:30 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. SQL> connect Enter user-name: system Enter password: Connected. SQL> select userenv('language') from dual; USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.AL32UTF8 |
或執行下句查詢:
1 |
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET'; |
1 2 3 4 5 6 7 8 |
SQL> SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET'; PARAMETER ------------------------------ VALUE -------------------------------------------------------------------------------- NLS_CHARACTERSET AL32UTF8 |
至此獲得了一串編碼的名稱,先記錄下來,登出SQLPLUS。
輸入export NLS_LANG=剛剛出現的編碼名稱,這邊是AMERICAN_AMERICA.UTF8
1 2 3 |
[oracle@localhost ~]$export NLS_LANG=AMERICAN_AMERICA.UTF8 [oracle@localhost ~]$echo $NLS_LANG AMERICAN_AMERICA.UTF8 |
此時,重新登入後查詢中文TABLE:
中文就出現了!!
P.S.
此時的export只是暫時設定環境變數,若要每次系統重新啟動時皆自動設置,
可以在/etc/profile中加入:
1 2 |
NLS_LANG=AMERICAN_AMERICA.UTF8 export NLS_LANG |