博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 客户端 NLS_LANG 的设置
阅读量:5079 次
发布时间:2019-06-12

本文共 6087 字,大约阅读时间需要 20 分钟。

参考链接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                             AMERICANNLS_TERRITORY                            AMERICANLS_CURRENCY                             $NLS_ISO_CURRENCY                         AMERICANLS_NUMERIC_CHARACTERS                       .,NLS_CHARACTERSET                         AL32UTF8            -------------数据库字符集NLS_CALENDAR                             GREGORIANNLS_DATE_FORMAT                          DD-MON-RRNLS_DATE_LANGUAGE                        AMERICANNLS_SORT                             BINARYNLS_TIME_FORMAT                          HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT                                      DD-MON-RR HH.MI.SSXFF AMNLS_TIME_TZ_FORMAT                       HH.MI.SSXFF AM TZRNLS_TIMESTAMP_TZ_FORMAT                      DD-MON-RR HH.MI.SSXFF AM TZRNLS_DUAL_CURRENCY                        $NLS_COMP                             BINARYNLS_LENGTH_SEMANTICS                                      BYTENLS_NCHAR_CONV_EXCP                                  FALSENLS_NCHAR_CHARACTERSET                  AL16UTF16          ---------------------国家字符集(用的少)NLS_RDBMS_VERSION                        11.2.0.1.0

客户端字符集

SQL> select * from nls_instance_parameters;             PARAMETER                                                        VALUE------------------------------------------------------------------------------------------------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------NLS_LANGUAGE                                                     AMERICANNLS_TERRITORY                                                        AMERICANLS_SORTNLS_DATE_LANGUAGENLS_DATE_FORMATNLS_CURRENCYNLS_NUMERIC_CHARACTERSNLS_ISO_CURRENCYNLS_CALENDARNLS_TIME_FORMATNLS_TIMESTAMP_FORMATNLS_TIME_TZ_FORMATNLS_TIMESTAMP_TZ_FORMATNLS_DUAL_CURRENCYNLS_COMP                                                         BINARYNLS_LENGTH_SEMANTICS                                                 BYTENLS_NCHAR_CONV_EXCP                                              FALSE

会话字符集

SQL> select * from nls_session_parameters;   PARAMETER                                                        VALUE------------------------------------------------------------------------------------------------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------NLS_LANGUAGE                                                                     AMERICANNLS_TERRITORY                                                        AMERICANLS_CURRENCY                                                         $NLS_ISO_CURRENCY                                                     AMERICANLS_NUMERIC_CHARACTERS                                               .,NLS_CALENDAR                                                         GREGORIANNLS_DATE_FORMAT                                                      DD-MON-RRNLS_DATE_LANGUAGE                                                    AMERICANNLS_SORT                                                                 BINARYNLS_TIME_FORMAT                                                      HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT                                                     DD-MON-RR HH.MI.SSXFF AMNLS_TIME_TZ_FORMAT                                                   HH.MI.SSXFF AM TZRNLS_TIMESTAMP_TZ_FORMAT                                                  DD-MON-RR HH.MI.SSXFF AM TZRNLS_DUAL_CURRENCY                                                    $NLS_COMP                                                                 BINARYNLS_LENGTH_SEMANTICS                                                     BYTENLS_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 $LANGzh_CN.UTF-8oracle@pdcsh021v03:~> echo $NLS_LANGSIMPLIFIED 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

你可能感兴趣的文章
LinkedList源码分析
查看>>
TF-IDF原理
查看>>
用JS制作博客页面背景随滚动渐变的效果
查看>>
JavaScript的迭代函数与迭代函数的实现
查看>>
一步步教你学会browserify
查看>>
Jmeter入门实例
查看>>
亲近用户—回归本质
查看>>
中文脏话识别的解决方案
查看>>
CSS之不常用但重要的样式总结
查看>>
Python编译错误总结
查看>>
URL编码与解码
查看>>
日常开发时遇到的一些坑(三)
查看>>
Eclipse 安装SVN插件
查看>>
深度学习
查看>>
TCP粘包问题及解决方案
查看>>
构建之法阅读笔记02
查看>>
添加按钮
查看>>
移动端页面开发适配 rem布局原理
查看>>
Ajax中文乱码问题解决方法(服务器端用servlet)
查看>>
会计电算化常考题目一
查看>>