linux操作系统环境变量LANG和NLS_LANG区别

发布时间:2019-10-16编辑:脚本学堂
本文介绍了linux操作系统中环境变量LANG与NLS_LANG的区别与关系,有需要的朋友参考下。

linux操作系统中环境变量针对语言项设置有几个,经常设置的是LANG和NLS_LANG。
LANG是针对Linux系统的语言、地区、字符集的设置,对linux下的应用程序有效,如date;NLS_LANG是针对Oracle语言、地区、字符集的设置,对oracle中的工具有效。
例如:
 

复制代码 代码示例:
export LANG=zh_CN.GB2312 
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 
 
$export LANG=zh_CN.GB2312 
$date 
2012年 11月 27日 星期二 16:20:35 CST 
 

显示是中文界面。
 

复制代码 代码示例:
$export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 
 
$sqlplus / as sysdba 
SQL*Plus: Release 10.2.0.4.0 - Production on Tue Nov 27 16:19:03 2012 
Copyright (c) 1982, 2007, Oracle.  All Rights Reserved. 
Connected to: 
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production 
With the Partitioning, Real Application Clusters, OLAP, Data Mining 
and Real Application Testing options 
SQL> select sysdate from dual; 
 
SYSDATE 
------------ 
27-NOV-12 
 

显示的是英文环境,但只对ORACLE程序生效。

Linux系统中关于环境变量的LANG设置主要有下列项目:
 

复制代码 代码示例:
[root@blliu tmp]# locale 
LANG=zh_CN.gb2312 
LC_CTYPE="zh_CN.gb2312" 
LC_NUMERIC="zh_CN.gb2312" 
LC_TIME="zh_CN.gb2312" 
LC_COLLATE="zh_CN.gb2312" 
LC_MONETARY="zh_CN.gb2312" 
LC_MESSAGES="zh_CN.gb2312" 
LC_PAPER="zh_CN.gb2312" 
LC_NAME="zh_CN.gb2312" 
LC_ADDRESS="zh_CN.gb2312" 
LC_TELEPHONE="zh_CN.gb2312" 
LC_MEASUREMENT="zh_CN.gb2312" 
LC_IDENTIFICATION="zh_CN.gb2312" 
LC_ALL= 
 

这里LC_ALL没有设置,如果它设置了,上面所有的设置都无效的,系统会读取LC_ALL。
locale -a 查看本地字符集
locale -m 查看所有支持的字符集

在Oracle数据库中查NLS_LANG设置:
 

复制代码 代码示例:
SQL> SELECT * 
  2    FROM DATABASE_PROPERTIES 
  3   WHERE PROPERTY_NAME IN 
  4         ('NLS_LANGUAGE', 'NLS_TERRITORY', 'NLS_CHARACTERSET'); 
 
PROPERTY_NAME                  PROPERTY_VALUE                 DESCRIPTION 
------------------------------ ------------------------------ -------------------- 
NLS_LANGUAGE                   AMERICAN                       Language 
NLS_TERRITORY                  AMERICA                        Territory