NLS_LANG 参数组成
NLS_LANG参数由以下部分组成
NLS_LANG=<Language><Territory>.<Clients Characterset>
NLS_LANG各部分含义定义如下:
Language指定:
- Oracle消息使用的语言
- 日期中月份和日显示
Territory指定: - 货币和数字格式
- 地区和计算星期及日期的习惯
Characterset控制客户端应用程序使用的字符集
通常设置或者等于客户端(如windows)代码页
在Windows上查看当前系统的代码页可以使用chcp命令:
C:\Users\Jowell>chcp
| 代码页 | 国家(地区)或语言 |
|---|---|
| 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-允许一个字节的片假名) |
| 50222 | 日文(JIS-允许一个字节的片假名 - SO/SI) |
| 50225 | 韩文(ISO) |
| 50932 | 日文(自动选择) |
| 50949 | 韩文(自动选择) |
| 51932 | 日文(EUC) |
| 51949 | 韩文(EUC) |
| 52936 | 简体中文(HZ) |
| 65000 | Unicode (UTF-7) |
| 65001 | Unicode (UTF-8) |
下表列出了所有支持的代码页及其国家(地区)或者语言:
| 代码页 | 国家(地区)或语言 |
|---|---|
| 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-允许一个字节的片假名) |
| 50222 | 日文(JIS-允许一个字节的片假名 - 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时系统编号
查看数据库服务器字符集
select * from nls_database_parameters; --其来源于props$, 是表示数据库的字符集
查看数据库客户端字符集环境
select * from nls_instance_parameters; --其来源于v$parameter,
查看数据库会话字符集环境
--其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是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