NLS_LANG 參數組成
NLS_LANG參數由以下部分組成
NLS_LANG=<Language><Territory>.<Clients Characterset>
NLS_LANG各部分含義定義如下:
Language指定:
- Oracle消息使用的語言
- 日期中月份和日顯示
Territory指定: - 貨幣和數字格式
- 地區(qū)和計算星期及日期的習慣
Characterset控制客戶端應用程序使用的字符集
通常設置或者等于客戶端(如windows)代碼頁
在Windows上查看當前系統(tǒng)的代碼頁可以使用chcp命令:
C:\Users\Jowell>chcp
| 代碼頁 | 國家(地區(qū))或語言 |
|---|---|
| 437 | 美國 |
| 708 | 阿拉伯文(ASMO 708) |
| 720 | 阿拉伯文(DOS) |
| 850 | 多語言(拉丁文 I) |
| 852 | 中歐(DOS) - 斯拉夫語(拉丁文 II) |
| 855 | 西里爾文(俄語) |
| 857 | 土耳其語 |
| 860 | 葡萄牙語 |
| 861 | 冰島語 |
| 862 | 希伯來文(DOS) |
| 863 | 加拿大 - 法語 |
| 865 | 日耳曼語 |
| 866 | 俄語 - 西里爾文(DOS) |
| 869 | 現代希臘語 |
| 874 | 泰文(Windows) |
| 932 | 日文(Shift-JIS) |
| 936 | 中國 - 簡體中文(GB2312) |
| 949 | 韓文 |
| 950 | 繁體中文(Big5) |
| 1200 | Unicode |
| 1201 | Unicode (Big-Endian) |
| 1250 | 中歐(Windows) |
| 1251 | 西里爾文(Windows) |
| 1252 | 西歐(Windows) |
| 1253 | 希臘文(Windows) |
| 1254 | 土耳其文(Windows) |
| 1255 | 希伯來文(Windows) |
| 1256 | 阿拉伯文(Windows) |
| 1257 | 波羅的海文(Windows) |
| 1258 | 越南文(Windows) |
| 20866 | 西里爾文(KOI8-R) |
| 21866 | 西里爾文(KOI8-U) |
| 28592 | 中歐(ISO) |
| 28593 | 拉丁文 3 (ISO) |
| 28594 | 波羅的海文(ISO) |
| 28595 | 西里爾文(ISO) |
| 28596 | 阿拉伯文(ISO) |
| 28597 | 希臘文(ISO) |
| 28598 | 希伯來文(ISO-Visual) |
| 38598 | 希伯來文(ISO-Logical) |
| 50000 | 用戶定義的 |
| 50001 | 自動選擇 |
| 50220 | 日文(JIS) |
| 50221 | 日文(JIS-允許一個字節(jié)的片假名) |
| 50222 | 日文(JIS-允許一個字節(jié)的片假名 - SO/SI) |
| 50225 | 韓文(ISO) |
| 50932 | 日文(自動選擇) |
| 50949 | 韓文(自動選擇) |
| 51932 | 日文(EUC) |
| 51949 | 韓文(EUC) |
| 52936 | 簡體中文(HZ) |
| 65000 | Unicode (UTF-7) |
| 65001 | Unicode (UTF-8) |
下表列出了所有支持的代碼頁及其國家(地區(qū))或者語言:
| 代碼頁 | 國家(地區(qū))或語言 |
|---|---|
| 437 | 美國 |
| 708 | 阿拉伯文(ASMO 708) |
| 720 | 阿拉伯文(DOS) |
| 850 | 多語言(拉丁文 I) |
| 852 | 中歐(DOS) - 斯拉夫語(拉丁文 II) |
| 855 | 西里爾文(俄語) |
| 857 | 土耳其語 |
| 860 | 葡萄牙語 |
| 861 | 冰島語 |
| 862 | 希伯來文(DOS) |
| 863 | 加拿大 - 法語 |
| 865 | 日耳曼語 |
| 866 | 俄語 - 西里爾文(DOS) |
| 869 | 現代希臘語 |
| 874 | 泰文(Windows) |
| 932 | 日文(Shift-JIS) |
| 936 | 中國 - 簡體中文(GB2312) |
| 949 | 韓文 |
| 950 | 繁體中文(Big5) |
| 1200 | Unicode |
| 1201 | Unicode (Big-Endian) |
| 1250 | 中歐(Windows) |
| 1251 | 西里爾文(Windows) |
| 1252 | 西歐(Windows) |
| 1253 | 希臘文(Windows) |
| 1254 | 土耳其文(Windows) |
| 1255 | 希伯來文(Windows) |
| 1256 | 阿拉伯文(Windows) |
| 1257 | 波羅的海文(Windows) |
| 1258 | 越南文(Windows) |
| 20866 | 西里爾文(KOI8-R) |
| 21866 | 西里爾文(KOI8-U) |
| 28592 | 中歐(ISO) |
| 28593 | 拉丁文 3 (ISO) |
| 28594 | 波羅的海文(ISO) |
| 28595 | 西里爾文(ISO) |
| 28596 | 阿拉伯文(ISO) |
| 28597 | 希臘文(ISO) |
| 28598 | 希伯來文(ISO-Visual) |
| 38598 | 希伯來文(ISO-Logical) |
| 50000 | 用戶定義的 |
| 50001 | 自動選擇 |
| 50220 | 日文(JIS) |
| 50221 | 日文(JIS-允許一個字節(jié)的片假名) |
| 50222 | 日文(JIS-允許一個字節(jié)的片假名 - SO/SI) |
| 50225 | 韓文(ISO) |
| 50932 | 日文(自動選擇) |
| 50949 | 韓文(自動選擇) |
| 51932 | 日文(EUC) |
| 51949 | 韓文(EUC) |
| 52936 | 簡體中文(HZ) |
| 65000 | Unicode (UTF-7) |
| 65001 | Unicode (UTF-8) |
所以chap 936可以設置簡體中文
查看NLS_LANG的方法
- Windows使用
echo %NLS_LANG%
比如我本機返回SIMPLIFIED CHINESE_CHINA.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時系統(tǒng)編號
查看數據庫服務器字符集
select * from nls_database_parameters; --其來源于props$, 是表示數據庫的字符集
查看數據庫客戶端字符集環(huán)境
select * from nls_instance_parameters; --其來源于v$parameter,
查看數據庫會話字符集環(huán)境
--其來源于v$nls_parameters,表示會話自己的設置,可能是會話的環(huán)境變量或者是alter session完成,如果會話沒有特殊的設置,將與nls_instance_parameters一致。
select * from nls_session_parameters;
查看數據庫當前字符集參數設置
SELECT * FROM v$nls_parameters;
客戶端 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:
- 常用unicode字符集
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