Oracle 客户端 NLS_LANG 的设置

参考链接1: https://blog.csdn.net/xinzhan0/article/details/78311417#t3
参考链接2: https://blog.csdn.net/xinzhan0/article/details/78311562

1、操作系统本身有字符集  ---locale -a 或者chcp
2、oracle数据库软件有字符集 
3、oracle软件的操作系统本身也有字符集

AL32UTF8
【AL】支持所有语言(All Language)
【32】每字符最多占用32位(4字节)
【UTF8】编码为UTF-8

WE8MSWIN1252
【WE】支持西欧语言(Western Europe)
【8】每字符需要占用8位(单字节)
【MSWIN1252】编码为CP1252

US7ASCII
【US】表示美国(United States)
【7】每字符需要占用7位
【ASCII】编码为ASCII

字符集说白了是一个集合 ,是一张表,这个表有两列,左面这列是字符是所有要存储的字符。
字符有很多字符 ,比如我们讲中文字符:
左面这列就是中国人常用的所有的中文字符 ,有汉字、英文字母有数字还有一些特殊的符号 ,在左面都出现是我们中文要使用的所有的字符
右边是一个编码,从1号2、3、4、5、6 ,将来提到1的时候就对应着一个字符
所以说字符集就是字符和编码的这么一个对应表

常用字符集:
US7ASCII
ZHS16CGB231280
AL32UTF8
AF16UTF16
ZHS16GBK

数据库字符集

SQL> select * from nls_database_parameters;

PARAMETER                            VALUE
------------------------------------------------------------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NLS_LANGUAGE                             AMERICAN
NLS_TERRITORY                            AMERICA
NLS_CURRENCY                             $
NLS_ISO_CURRENCY                         AMERICA
NLS_NUMERIC_CHARACTERS                       .,
NLS_CHARACTERSET                         AL32UTF8            -------------数据库字符集
NLS_CALENDAR                             GREGORIAN
NLS_DATE_FORMAT                          DD-MON-RR
NLS_DATE_LANGUAGE                        AMERICAN
NLS_SORT                             BINARY
NLS_TIME_FORMAT                          HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT                                      DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT                       HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT                      DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY                        $
NLS_COMP                             BINARY
NLS_LENGTH_SEMANTICS                                      BYTE
NLS_NCHAR_CONV_EXCP                                  FALSE
NLS_NCHAR_CHARACTERSET                  AL16UTF16          ---------------------国家字符集(用的少)
NLS_RDBMS_VERSION                        11.2.0.1.0

客户端字符集

SQL> select * from nls_instance_parameters;             

PARAMETER                                                        VALUE
------------------------------------------------------------------------------------------------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------
NLS_LANGUAGE                                                     AMERICAN
NLS_TERRITORY                                                        AMERICA
NLS_SORT
NLS_DATE_LANGUAGE
NLS_DATE_FORMAT
NLS_CURRENCY
NLS_NUMERIC_CHARACTERS
NLS_ISO_CURRENCY
NLS_CALENDAR
NLS_TIME_FORMAT
NLS_TIMESTAMP_FORMAT
NLS_TIME_TZ_FORMAT
NLS_TIMESTAMP_TZ_FORMAT
NLS_DUAL_CURRENCY
NLS_COMP                                                         BINARY
NLS_LENGTH_SEMANTICS                                                 BYTE
NLS_NCHAR_CONV_EXCP                                              FALSE

会话字符集

SQL> select * from nls_session_parameters;   

PARAMETER                                                        VALUE
------------------------------------------------------------------------------------------------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------
NLS_LANGUAGE                                                                     AMERICAN
NLS_TERRITORY                                                        AMERICA
NLS_CURRENCY                                                         $
NLS_ISO_CURRENCY                                                     AMERICA
NLS_NUMERIC_CHARACTERS                                               .,
NLS_CALENDAR                                                         GREGORIAN
NLS_DATE_FORMAT                                                      DD-MON-RR
NLS_DATE_LANGUAGE                                                    AMERICAN
NLS_SORT                                                                 BINARY
NLS_TIME_FORMAT                                                      HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT                                                     DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT                                                   HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT                                                  DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY                                                    $
NLS_COMP                                                                 BINARY
NLS_LENGTH_SEMANTICS                                                     BYTE
NLS_NCHAR_CONV_EXCP                                                  FALSE

修改会话显示为中文NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8" ----------.bash_profile里面的参数只是在修改会话的字符集,也可以直接export指定
NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8" -------对应的分别是语言、地区、字符集。
字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk
NLS作用优先级别:Sql function > alter session> 环境变量或注册表> 参数文件> 数据库默认参数

环境模拟
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8" 登入界面显示英文,在linux sqlplus表中插入注释,查看注释正常显示为中文,sqlplus develop中也正常显示,但是sqlplus develop不能改注释,只能在linux中改
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8" 登入界面显示中文,在linux中插入注释,查看住注释正常显示为中文,sqlplus develop中也正常显示,但是sqlplus develop不能改注释,只能在linux中改
若想要在sqlplus developer中支持中文的查看和修改(例如修改表的注释),则在环境变量中加NLS_LANG=AMERICAN_AMERICA.AL32UTF8 --注意:这里只要字符集为AL32UTF8就可以,前面的语言可以任意

Windows  echo %NLS_LANG%
Linux    env | grep NLS_LANG 

例如:数据库为GBK

oracle@pdcsh021v03:~> echo $LANG
zh_CN.UTF-8
oracle@pdcsh021v03:~> echo $NLS_LANG
SIMPLIFIED CHINESE_CHINA.AL32UTF8

一、修改会话的字符集与数据库的字符集一致

数据库查询结果
1551426-20190109131956353-1120832456.png
创建环境变量(只需要字符集一致),创建结果与nls_session_parameters的值对应,PL/SQL显示结果为中文
1551426-20190109130219197-538534876.png
1551426-20190109132327220-363617520.png
注:客户端的字符集是在没有设置NLS_LANG环境变量时,会话默认的字符集

转载于:https://www.cnblogs.com/reaperhero/p/10242865.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值