用PL/SQL Developer登陸Oracle資料庫,輸入使用者名和密碼後報:資料庫字元集(AL32UTF8)和用戶端字元集(2%)是不同的,字元集轉化可能會造成不可預期的後果。
解決:
windows
regedit
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\ 找到這個
輕按兩下 NLS_LANG 使值為 american_america.AL32UTF8
右擊電腦屬性
建立系統變量
名字 NLS_LANG
值: american_america.AL32UTF8
再次登入 OK
1. NLS_LANG 參數組成
NLS_LANG參數由以下部分組成:
NLS_LANG=<Language>_<Territory>.<Clients Characterset>
NLS_LANG各部分含義如下:
LANGUAGE指定:
-Oracle消息使用的語言
-日期中月份和日顯示
TERRITORY指定
-貨币和數字格式
-地區和計算星期及日期的習慣
CHARACTERSET:
-控制用戶端應用程式使用的字元集
通常設定或者等于用戶端(如Windows)代碼頁
或者對于unicode應用設定為UTF8
在Windows上檢視目前系統的代碼頁可以使用chcp指令:
E:\>chcp
活動的代碼頁: 936
代碼頁936也就是中文字元集 GBK,在Microsoft的官方站點上,
我們可以遭到關于936代碼頁的具體編碼規則,請參考以下連結:
<a target="_blank" href="http://www.microsoft.com/globaldev/reference/dbcs/936.htm">http://www.microsoft.com/globaldev/reference/dbcs/936.htm</a>
2. 檢視 NLS_LANG 的方法
Windows使用:
echo %NLS_LANG%
如:
E:\>echo %NLS_LANG%
AMERICAN_AMERICA.ZHS16GBK
Unix使用:
env|grep NLS_LANG
/opt/oracle>env|grep NLS_LANG
NLS_LANG=AMERICAN_CHINA.ZHS16GBK
Windows用戶端設定,可以在系統資料庫中更改NLS_LANG,具體鍵值位于:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\
xx指存在多個ORACLE_HOME時系統編号。
3. 檢視資料庫目前字元集參數設定
SELECT * FROM v$nls_parameters;
或
select * from nls_database_parameters
select userenv(‘language’) from dual;
4. 檢視資料庫可用字元集參數設定
SELECT * FROM v$nls_valid_values;
5. 用戶端 NLS_LANG 的設定方法
Windows:
# 常用中文字元集
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
# 常用unicode字元集
set NLS_LANG=american_america.AL32UTF8
可以通過修改系統資料庫鍵值永久設定
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\NLS_LANG
Unix:
export NLS_LANG=american_america.AL32UTF8
export NLS_LANG="Simplified Chinese_china".ZHS16GBK
可以編輯 bash_profile 檔案進行永久設定
vi .bash_profile
NLS_LANG="Simplified Chinese_china".ZHS16GBK export NLS_LANG
# 使 bash_profile 設定生效
source .bash_profile