`
1enny
  • 浏览: 70738 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

字符集的简要概述

 
阅读更多
oracle031

字符集的简要概述
字符集:就是一张字符和编码的对应表。
1、字符集的作用和含义
字符编码
使用场合
数据库字符集
(1)用来存储CHAR, VARCHAR2, CLOB, LONG等类型数据
(2)用来标示诸如表名、列名以及PL/SQL变量等
(3)用来存储SQL和PL/SQL程序单元等
国家字符集
(1)用以存储NCHAR, NVARCHAR2, NCLOB等类型数据
2、客户端OS字符集、NLS_LANG设置、服务器端OS字符集、Oracle数据库字符集
字符集之间的关系
正确设置字符集
3、字符集出现问题以后的判断流程
存储的是错误的字符编码
存储的是正确的字符编码
4、locale、locale -a、chcp

5、字符集命名
Oracle的字符集命名遵循以下命名规则:
<Language><bit size><encoding>
即: <语言><比特位数><编码>
比如: ZHS16GBK表示采用GBK编码格式、16位(两个字节)简体中文字符集

US7ASCII //美国人选择的字符集,只能是美国使用的字符不超过128个
zhs16cgb231280//中国人使用的字符集,存储中国部分字符
AL32UTF8//oracle数据库字符集
AF16UTF16//oracle选择国家字符集
ZHS16GBK//中国使用的字符集,是包括所有中国字符,是zhs16chb231280的超集,不是严格超集
utf8//

超集 严格超集

NLS_LANG=<language>_<territory>.<client character set>
Language:显示oracle消息,校验,日期命名
Territory:指定默认日期、数字、货币等格式
Client character set:指定客户端将使用的字符集
例如:NLS_LANG=AMERICAN_AMERICA.US7ASCII
AMERICAN是语言就是登录到数据库后,数据库自身所提示的信息是那种语言不是字符编码;
AMERICA是地区表示不同地区所显示信息不同比如说时区、货币等;
US7ASCII是客户端字符集

Oracle提供若干NLS参数定制数据库和用户机以适应本地格式,例如有NLS_LANGUAGE,NLS_DATE_FORMAT,NLS_CALENDER等,可以通过查询以下数据字典或v$视图查看。
NLS_DATABASE_PARAMETERS--显示数据库当前NLS参数取值,包括数据库字符集取值
NLS_SESSION_PARAMETERS--显示由NLS_LANG 设置的参数,或经过alter session 改变后的参数值(不包括由NLS_LANG 设置的客户端字符集)
NLS_INSTANCE_PARAMETE--显示由参数文件init<SID>.ora 定义的参数V$NLS_PARAMETERS--显示数据库当前NLS参数取值


select * from nls_session_parameters
NLS_LANGUAGE SIMPLIFIED CHINESE
NLS_TERRITORY CHINA
NLS_CURRENCY ¥
NLS_ISO_CURRENCY CHINA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE SIMPLIFIED CHINESE
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

select * from nls_database_parameters
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
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

select userenv('language') from dual;//查询客户端的
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK

select nls_charset_name(to_number('0354','xxxx')) from dual;

NLS_CHARSET_NAME(TO_NUMBER('0354','XXXX'
----------------------------------------
ZHS16GBK

echo $NLS_LANG

SQL> !echo $NLS_LANG
american_america.zhs16gbk

select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from dual;

TO_CH
-----
354

SQL>

select dump('abc',1016) from dual;
DUMP('ABC',1016)
--------------------------------------------
Typ=96 Len=3 CharacterSet=ZHS16GBK: 61,62,63

SQL>

select * from V$NLS_VALID_VALUES;//This view lists all valid values for NLS parameters.


如果软件有字符集,那么系统的字符集就会失效;假如软件不带字符集,那么久使用操作系统的字符集

oracle的所有字符集转换都是在oracle端转换的
oracle接受的都是已经编号码的字符
oracle存储的都是oracle数据库的编码格式存储的
oracle需要在编码之前询问传来的端使用什么编码的,假如相同就直接存储,不同就转码而客户端只编码

NLS_LANG参数要和客户端操作系统的字符集一致。NLS_LANG相当于于oracle打交道的
sql developer和sqlplus一样没有字符集










分享到:
评论

相关推荐

    使用Android 系统测量软件开发技术 [武安状 主编] 2014年版

    第3章 Java语言基础3.1 Java简介3.1.1 Java概述3.1.2 Java语言特点3.1.3 Java组成与体系3.1.4 Java运行体系3.2 Java基础3.2.1 Java数据类型3.2.2 Java常量3.2.3 Java变量3.2.4 Unicode字符集3.3 Java基本元素3.3.1 ...

    DFT的matlab源代码-ASAP:ASAP是一个可以快速分析和可视化晶体或分子结构数据集的软件包

    代表化学环境的理论的简要概述,这是一种简单而实用的概念方法,用于以通用和自动化的方式生成结构图。 关于映射材料和化学数据集的几个说明性示例,包括结晶和无定形材料,界面和有机分子。 这些示例的数据集在this...

    Java2+类库参考手册-pdf

    包概述对每个包及其所有类进行了简要描述,另外还画出了包中的类的继承层次结构示意图。每个类描述都独自构成一个小节,包含了类层次结构示意图、类描述、类示例、成员概述以及那些在版本1.2中作了修改或新增的类...

    labview Vision图像处理高清

    第一章 概述... 9 第一节 NI LabVIEW & NI Vision简介... 9 第二节 NI各款视觉... 432 6.5 自定义字符识别ROI 434 6.6 学习字符集文件... 434 6.7 初始化等修改... 436 6.8 自动运行效果... 439 转载 资源来源于网上

    石老师的LABVIEW 宝典

    6.3.4 改善字符集文件操作... 427 6.4 通过图像处理平台加载字符识别函数... 432 6.5 自定义字符识别ROI 434 6.6 学习字符集文件... 434 6.7 初始化等修改... 436 6.8 自动运行效果... 439 转载 资源来源于网上

    SQL Server之JSON 函数详解

    随着JSON的流行,SQL Server2016开始支持JSON数据类型,不仅可以直接输出JSON格式的结果集,还能读取JSON格式的数据。 1 概述 本篇文件将结合MSND简要分析Sqlserver中JSON函数,主要包括ISJSON,JSON_VALUE,JSON_...

    WinHex V15.1 和 V16.7 汉化版

    - 字符集: ANSI ASCII,IBM ASCII,EBCDIC,(Unicode) - 立即窗口切换、打印、生成随机数字 - 支持打开大于 4 GB 的文件,非常快速,容易使用。 - 广泛的联机帮助 功能特点 WinHex 具有强大的搜索功能,可以查找和...

    C#微软培训资料

    第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 编程语言 程语言编程语言 程语言 C#.4 1.1 Microsoft.NET——一场新的革命.4 1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    CruiseYoung提供的带有详细书签的电子书籍目录 ... 该资料是《Oracle SQL高级编程》的源代码 对应的书籍资料见: Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐) 基本信息 原书名: Pro Oracle SQL ...

    PT80-NEAT开发指南v1.1

    NEAT 开 发 指南 文档 适用于 PT80 系列 移动数据终端 版本记录 版本号 版本描述 发布日期 V 1.0 初始版本。 2012-04-12 V1.1 修改前三章内容 2012-09-25 目录 第一章 关于本手册.....................................

Global site tag (gtag.js) - Google Analytics