zoukankan      html  css  js  c++  java
  • 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
    

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

    数据库查询结果

    创建环境变量(只需要字符集一致),创建结果与nls_session_parameters的值对应,PL/SQL显示结果为中文


    注:客户端的字符集是在没有设置NLS_LANG环境变量时,会话默认的字符集

  • 相关阅读:
    ffmpeg 日志系统av_log()
    语音识别哪家强 讯飞 搜狗 百度 阿里还是腾讯
    利用FFmpeg切割视频
    网易云音乐 抓取成功,按评论数排序
    python from import 自定义模块
    使用Fiddler调试线上JS代码
    sublime text 格式化html css 与显示函数列表
    微信硬件(四)调试工具
    微信硬件平台(三) 菜单开发
    微信硬件(三)
  • 原文地址:https://www.cnblogs.com/reaperhero/p/10242865.html
Copyright © 2011-2022 走看看