环境变量NLS_LANG

NLS_LANG是一个环境变量,用于定义语言,地域以及字符集属性。对于非英语的字符集,NLS_LANG的设置就非常重要。
NLS:‘National Language Support (NLS)’ 当我们设定一种nls的时候实际上我们是为oracle在存放数据时指定了他的语种所特有的一些表达形式,比如我们选择chinese,那么它的中文字符如何存放,按什么规则排序,货币如何表示,日期格式也就被设定了。

NLS_LANG参数由以下部分组成:NLS_LANG=<Language>_<Territory>.<Clients Characterset> NLS_Language 指定: - Oracle(错误)信息的语言 - 日和月份的名称 注意:NLS_LANGUAGE与插入和查询的*数据*的语言无关。
NLS_Territory 指定: - 货币和数字格式 - 计算星期和天数的范围和惯例
客户端字符集(CLIENTS CHARACTERSET): - 定义Oracle客户端,客户应用使用的编码 * 或者它要符合您Microsoft Windows代码页 (GUI工具的ACP, 命令提示符的CHCP 值) * 或者为Unicode WIN32应用设置为UTF8/AL32UTF8。

常见的值可以参见Oracle Database Client Globalization Support

Windows中设置NLS_LANG

1.命令提示符中设置为环境变量

如果您在命令行中设置NLS_LANG为环境变量,它将覆盖注册表和系统属性中的NLS_LANG的定义。在命令提示符中,使用“set”命令,例如:

LANGUAGE设置为中文时,提示如下:

C:\Users\TianPan>set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

C:\Users\TianPan>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 28 10:07:21 2014
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
SQL> conn scott/tiger 已连接。

SQL> select sysdate from dual;
SYSDATE -------------- 28-11月-14

当Language设置为American时,提示信息则变为英文:

C:\Users\TianPan>set nls_lang=AMERICAN_AMERICA.ZHS16GBK

C:\Users\TianPan>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Fri Nov 28 10:07:51 2014
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
SQL> conn scott/tiger Connected. SQL> select sysdate from dual;
SYSDATE ------------ 28-NOV-14

在Windows下通过set nls_lang来设置,只是Session级别的,关闭cmd窗口后再打开,就又变为原来的设置了。如需永久生效,可以修改注册表的参数。

2.注册表设置(永久生效)

默认情况下,windows上的Oracle安装使用注册表来定义这个设置。 版本 10g 及以上: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<oracle_home_name> 这里您会看到一个条目名为NLS_LANG

在64位windows平台上安装32位软件,会使用32位兼容性路径 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_<oracle_home_name>

3.操作系统环境变量

尽管注册表是Microsoft Windows设置的主要存储位置,它不是唯一可以设置参数的地方。

虽然不推荐,但您可以设置NLS_LANG为系统属性中的系统或者用户变量。这个设置会被所有Oracle home使用。

设置位置: ‘我的电脑‘ -> ‘属性‘ > ‘高级‘  -> ‘环境变量‘

因为这些环境变量比注册表中已经设置的参数级别高,所以除非您有非常好的理由否则不要在这个位置设置Oracle参数。

Linux/Unix下的设置

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

DB中的NLS_LANG DB也有自己的NLS_LANG参数,来标识数据库的语言,地域,字符集。可以通过以下的SQL来查得, SELECT * FROM v$nls_parameters;  OR SELECT USERENV (‘language‘) FROM DUAL;
客户端的NLS_LANG和DB的NLS_LANG DB的NLS_LANG和客户端环境变量中NLS_LANG尽可能的保持一致。Setting the NLS_LANG Environment Variable for Oracle Databases 提供了如何保持一致的方法。 那么为什么要保持一致呢?那是因为如果字符集不匹配,有可能在DB和Client间相互转换的过程中,出现字符转换错误的情况。比如Oracle nls_lang tips中举的例子。

更详细的内容可以参考下边这些材料:

Microsoft Windows 环境中NLS_LANG的正确设置 (Doc ID 1577370.1)

在 Unix 环境中正确设置 NLS_LANG (Doc ID 1548858.1)

NLS_LANG Explained (How does Client-Server Character Conversion Work?) (Doc ID 158577.1)

NLS_LANG FAQ

Oracle Database Client Globalization Support Setting the NLS_LANG Environment Variable for Oracle Databases

Oracle nls_lang tips

时间: 2024-10-14 12:35:37

环境变量NLS_LANG的相关文章

Oracle环境变量NLS_LANG

NLS_LANG是一个环境变量,用于定义语言,地域以及字符集属性.对于非英语的字符集,NLS_LANG的设置就非常重要. NLS:‘National Language Support (NLS)’ 当我们设定一种nls的时候实际上我们是为oracle在存放数据时指定了他的语种所特有的一些表达形式,比如我们选择chinese,那么它的中文字符 如何存放,按什么规则排序,货币如何表示,日期格式也就被设定了. NLS_LANG参数由以下部分组成:NLS_LANG=<Language>_<Ter

Oracle 环境变量NLS_LANG

NLS_LANG是一个环境变量,用于定义语言,地域以及字符集属性.对于非英语的字符集,NLS_LANG的设置就非常重要. NLS:'National Language Support (NLS)' 当我们设定一种nls的时候实际上我们是为oracle在存放数据时指定了他的语种所特有的一些表达形式,比如我们选择chinese,那么它的中文字符如何存放,按什么规则排序,货币如何表示,日期格式也就被设定了. NLS_LANG参数由以下部分组成:NLS_LANG=<Language>_<Terr

Windows8安装Oracle11.2.0.1-0624,附带 DBCA建库、netca创建监听、配置PLSQL、定义客户端的环境变量 NLS_LANG、定义客户端的环境变量 TNS_ADMIN02

3.NETCA 配置监听程序 进入dos窗口 运行 NETCA             4.DBCA建库   同配置监听程序,在 dos窗口 运行 DBCA       设置数据库名称 不需要EM 给数据库中的用户设置密码 为方便管理,建议 使用统一密码 oracle 密码输入时,有提示警告,不符合Oracel建议时不用管. (因Oracel建议的密码规则比较麻烦, 必须是大写字母加小写字母加数字,而且必须是8位以上.麻烦,可以输入平常自己习惯的短小密码即可)   不需要配置 [快速恢复区] O

Linux程序写入oralce数据库中文显示为问号??? 代码实现设置环境变量!

Linux程序写入oralce数据库中文显示为问号??? 1.问题介绍 根本原因是字符集的问题,是数据库的字符集和写入程序的linux系统的字符集不一致导致: 但是用export NLS_LANG="SIMPLIFIED CHINESE"_CHINA.ZHS16GBK添加环境变量,或者在.bash_profile文件中添加这个环境变量,或者在/etc/profile文件中添加这个环境变量,用source 命令使其生效,后写入oralce数据库的中文还是问号?,接着有重启了系统,重启了服

Oracle客户端配置字符集环境变量

1查询服务端字符集 指令:select userenv('language') from dual; 结果:AMERICAN_AMERICA.AL32UTF8 2配置本地环境变量 在系统变量中新加 变量名:NLS_LANG 变量值:AMERICAN_AMERICA.AL32UTF8 3重启plsql

CentOS7设置环境变量

目录 一.环境变量的概念 1.环境变量的含义 2.环境变量的分类 3.Linux环境变量 二.常用的环境变量 1.查看环境变量 2.常用的环境变量 三.设置环境量 1.系统环境变量 2.用户环境变量 3.环境变量脚本文件的执行顺序 四.重要环境变量的详解 1.PATH环境变量 2.LANG环境变量 3.LD_LIBRARY_PATH环境变量 4.CLASSPATH 五.环境变量的生效 六.应用经验 七.版权声明 一.环境变量的概念 1.环境变量的含义 程序(操作系统命令和应用程序)的执行都需要运

Linux下修改环境变量PATH

1.什么是环境变量(PATH) 在Linux中,在执行命令时,系统会按照PATH的设置,去每个PATH定义的路径下搜索执行文件,先搜索到的文件先执行. 我们知道查阅文件属性的指令ls 完整文件名为:/bin/ls(这是绝对路径), 那你会不会觉得很奇怪:"为什么我可以在任何地方执行/bin/ls这个指令呢? " 为什么我在任何目录下输入 ls 就一定可以显示出一些讯息而不会说找不到该 /bin/ls 指令呢? 这是因为环境变量 PATH 的帮助所致呀! 当我们在执行一个指令癿时候,举例

Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量)

原文:http://www.cnblogs.com/heshan664754022/archive/2013/03/27/2984357.html Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量) 用文本编辑工具打开用于启动Tomcat的批处理文件startup.bat,仔细阅读.在这个文件中,首先判断CATALINA_HOME环境变量是否为空,如果为空,就将当前目录设为CATALINA_HOME的值.接着判断当前目录下是否存在bin\catalina.bat,如果文件

linux安装maven及配置环境变量 配图

Maven 3.5.0 maven安装和环境变量的配置 1 下载 maven 链接:http://pan.baidu.com/s/1qXXjXfe 密码:r92r 2 解压安装包 tar zvxf apache-maven-3.5.0-bin.tar.gz 3  配置maven环境变量 vi  /etc/profile   编辑系统配置文件 #set Maven environmentexport MAVEN_HOME=/usr/local/software/dir-maven/apache-m