湛蓝之海 发表于 2021-10-3 19:47:02

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

操作系统环境变量针对语言项设置有几个,我经常设置的是这两个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设置主要有下列项目:
代码如下:



# 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
http://www.zzvips.com/article/29430.html
页: [1]
查看完整版本: linux操作系统环境变量LANG和NLS_LANG的区别