`
nick216
  • 浏览: 43288 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Oracle 乱码,PL/SQL乱码,SQLPLUS乱码,环境变量NLS_LANG

阅读更多

命令行直接设定环境变量,可以正常展示:

 

 注意:不要设定双引号,设定以后反而显示乱码



 

也可以直接设定环境变量

 上述设定对于PL/SQL同样有效

 

参考:

 

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



出处:http://blog.csdn.net/pan_tian/article/details/7745717

 

  • 大小: 15.2 KB
  • 大小: 40.3 KB
  • 大小: 20.2 KB
分享到:
评论

相关推荐

    PLSQL 中文乱码解决方案

    对于PL/SQL、SQL*Plus或Toad等工具,可以通过修改环境变量`NLS_LANG`来调整字符集设置,使其与数据库的字符集相匹配。具体操作步骤如下: - 打开注册表编辑器,定位到`HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE`目录下,...

    解决linux环境下sqlplus乱码的方法

    在Linux环境下,SQL*Plus是Oracle数据库管理系统的命令行工具,用于执行SQL语句和PL/SQL块。然而,有时用户可能会遇到字符编码问题,导致输出显示为乱码。这通常与系统环境变量、终端设置或者数据库自身的字符集不...

    本机不安装ORACLE直接连接服务器上的ORACLE

    4、设置ORACLE的语言,添加环境变量NLS_LANG ,值为: AMERICAN_AMERICA.AL32UTF8 该值可以连接到远程数据库中,通过下面的sql语句查询得到: select userenv('language') from dual; 如果该值设置不正确,将导致PL...

    windows server 2008 R2 64bit上ORACLE安装与配置概述.pdf

    新建环境变量:“NLS_LANG”,值:“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”; 六、在32BIT应用服务器上安装配置 32 位的 ORACLE 客户端 由于我们安装的数据库为 64位,KXBP不支持 64位操作系统,所以我们需要安装一个...

    orcle使用中经常遇到的问题及解决办法

    例如,可以通过`ALTER SYSTEM SET NLS_CHARACTERSET`命令修改数据库字符集,或调整客户端的环境变量如`NLS_LANG`来解决乱码问题。 再者,当遇到Oracle资源正忙的情况,这可能是因为并发用户过多或SQL执行效率低下。...

    Oracle11g安装完整步骤

    #### 五、环境变量配置 - **TNS_ADMIN:** 设置为`tlnames.ora`文件所在位置,例如`D:\ProgramFiles\instantclient_11_2\NETWORK\ADMIN`。 - **NLS_LANG:** 设置为`SIMPLIFIEDCHINESE_CHINA.ZHS16GBK`,以便支持...

    plsql13安装.zip

    4:配置pl/sql 工具--首选项--连接 ORCALE中目录:D:\Program Files\PLSQL Developer 13\instantclient_19_6 OCI库:D:\Program Files\PLSQL Developer 13\instantclient_19_6\oci.dll 5:设置环境变量 1)指向Oracle...

    客户端软件

    3. **设置环境变量**:添加系统环境变量,包括`NLS_LANG`以解决中文字符乱码问题,设置为`SIMPLIFIED CHINESE_CHINA.ZHS16GBK`;`TNS_ADMIN`指向Oracle客户端的安装目录;`Path`中包含`C:\instantclient_11_1`,使得...

    orcale笔记

    解决方法是设置`NLS_LANG`环境变量,或者在PL/SQL Developer等工具中设置适当的字符集。 对于数据库中的对象,如表、视图和索引,可以使用SQL命令进行操作。`DESC`命令用于查看表结构,如`DESC emp`。视图的创建和...

    instantclient 10.2 客户端配置

    可以使用`NLS_LANG`环境变量来设置客户端的字符集,如`AMERICAN_AMERICA.ZHS16GBK`。 通过以上步骤,开发者和DBA可以成功配置并使用Oracle Instant Client 10.2连接到远程数据库,进行数据查询、管理和维护工作。在...

    PLSQL工具安装配置详细介绍

    PLSQL Developer是一款强大的Oracle数据库管理工具,主要用于编写、调试和执行PL/SQL代码。在本文中,我们将详细探讨如何在Windows环境下安装配置PLSQL Developer,以及解决可能出现的问题。 首先,你需要下载PLSQL...

Global site tag (gtag.js) - Google Analytics