Oracle字符集相关知识
Oracle的字符集命名遵循以下命名规则:
<Language><bit size><encoding>
AL32UTF8/AL16UTF16/ZHS16GBK(AL=ALL)
Oracle客户端字符集(NLS_LANG):
Oracle使用的系统环境变量,主要用于传输过程中进行转换判断,格式为<language>_<territory>.<character_set>,如:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
language控制消息、日期、月份等的显示格式,territory会影响默认日期、货币值、数字等的显示格式,character_set控制客户端应用使用的字符集。
数据库字符集(NLS_CHARACTERSET):
在创建数据库实例时设置,控制数据库的字符集。
国家字符集(NLS_NCHAR_CHARACTERSET):
在创建数据库实例时设置,控制数据库中NCHAR, NVARCHAR2, NCLOB等类型数据
查询Oracle相关字符集设置:
--数据库字符集
SELECT * FROM NLS_DATABASE_PARAMETERS;--实例字符集环境
SELECT * FROM NLS_INSTANCE_PARAMETERS;--会话字符集环境
SELECT * FROM NLS_SESSION_PARAMETERS;--客户端字符集
SELECT * FROM V$NLS_PARAMETERS;
SELECT USERENV('language') FROM DUAL;
字符/字符集/字符编码介绍:
字符(Character):
字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。字符是电子计算机或无线电通信中字母、数字、符号的统称,其是数据结构中最小的数据存取单位,通常由8个二进制位(一个字节)来表示一个字符。
字符集(Character Set):
字符集是多个字符的集合。字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。
UNICODE:
Unicode译为统一码,也叫万国码、单一码是计算机科学领域里的一项业界标准,是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。
Unicode字符集可以简写为UCS(Unicode Character Set)。UCS-2是用两个字节来表示代码点,其取值范围为 U+0000~U+FFFF。UCS-4是用四个字节表示代码点,取值范围为范围为U+00000000~U+7FFFFFFF,其中 U+00000000~U+0000FFFF和UCS-2是一样的。
Unicode编码规则包括:UTF-8、UTF-16、UTF-32。
字符编码(Character encoding):
字符编码也称字集码,是编码规则,把字符集中的字符编码为指定集合中某一对象例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。
ASCII:
ASCII((American Standard Code for Information Interchange):美国信息交换标准代码) 是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。
它是一个7位的编码标准(剩下的1位二进制为0),最后一次更新则是在1986年,包括33个控制代码(0~31和127)、空格(32)、10个数字(48~57)、26个大写字母(65~90)、26个小写字母(97~122)和32个符号,共128个代码。其中33个字符无法显示(一些终端提供了扩展,使得这些字符可显示为诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符。控制字符的用途主要是用来操控已经处理过的文字。在33个字符之外的是95个可显示的字符。用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。
ANSI:
ANSI((American National Standards Institute):美国国家标准学会) 是一种字符代码,为使计算机支持更多语言,通常使用 0x00~0x7f范围的1个字节来表示1个英文字符。超出此范围的使用0x80~0xFFFF来编码,即扩展的ASCII编码。
不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称为ANSI编码。是在ASCII基础上进行的扩充。
ANSI并不是某一种特定的字符编码,而是在不同的系统中表示不同的编码,在简体中文系统中它是GB18030,在韩文系统中它是EUC-KR。不同ANSI编码之间互不兼容。
UTF(Unicode Transformation Formats)系列:
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。由于较小值的编码点一般使用频率较高,直接使用Unicode编码效率低下,大量浪费内存空间。UTF-8就是为了解决向后兼容ASCII码而设计,Unicode中前128个字符,使用与ASCII码相同的二进制值的单个字节进行编码,而且字面与ASCII码的字面一一对应,这使得原来处理ASCII字符的软件无须或只须做少部分修改,即可继续使用。
UTF-8使用一至六个字节为每个字符编码(尽管如此,2003年11月UTF-8被RFC 3629重新规范,只能使用原来Unicode定义的区域,U+0000到U+10FFFF,也就是说最多四个字节):
1.128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F)。
2.带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要两个字节编码(Unicode范围由U+0080至U+07FF)。
3.其他基本多文种平面(BMP)中的字符(这包含了大部分常用字,如大部分的汉字)使用三个字节编码(Unicode范围由U+0800至U+FFFF)。
4.其他极少使用的Unicode 辅助平面的字符使用四至六字节编码(Unicode范围由U+10000至U+1FFFFF使用四字节,Unicode范围由U+200000至U+3FFFFFF使用五字节,Unicode范围由U+4000000至U+7FFFFFFF使用六字节)
UTF-16是Unicode字符编码五层次模型的第三层:字符编码表的一种实现方式。即把Unicode字符集的抽象码位映射为16位长的整数(即码元)的序列,用于数据存储或传递。
UTF-16可看成是UCS-2的父集。在没有辅助平面字符(surrogate code points)前,UTF-16与UCS-2所指的是同一的意思。
UTF-32是32位Unicode转换格式的缩写。UTF-32是一种用于编码Unicode的协定,该协定使用32位比特对每个Unicode码位进行编码。与其他可变长度的Unicode转换格式(UTF)相比,UTF-32编码长度是固定的,UTF-32中的每个32位值代表一个Unicode码位,并且与该码位的数值完全一致。
UTF-32和UCS4能表示的字符是相同的。
Oracle字符集相关知识相关推荐
- 关于 Oracle ACFS 相关知识的简单学习
作者 | JiekeXu 来源 | JiekeXu之路(ID: JiekeXu_IT) 转载请联系授权 | (微信ID:xxq1426321293) 大家好,我是 JiekeXu,很高兴又和大家见面了 ...
- ORACLE字符集基础知识
概念描叙 ORACLE 数据库有国家字符集(national character set)与数据库字符集(database character set)之分.两者都是在创建数据库时需要设置的.国 ...
- [转]oracle临时表相关知识
回复: 临时表存放在哪儿? DML statements on temporary tables do not generate redo logs for the data changes. How ...
- oracle数据库相关知识,Oracle数据库相关知识点复习
一.Oracle数据库中常用的数据类型varchar2(长度)可变长字符串char(长度)定长number()表示整数或者浮点数number(8) number(8,2)clog字符的大对象blog二 ...
- SQL Server 与 MySQL 中排序规则与字符集相关知识的一点总结
字符集&&排序规则 字符集是针对不同语言的字符编码的集合,比如UTF-8字符集,GBK字符集,GB2312字符集等等,不同的字符集使用不同的规则给字符进行编码.排序规则则是在特定字符集 ...
- Oracle字符集问题总结
经常有同事咨询oracle数据库字符集相关的问题,如在不同数据库做数据迁移.同其它系统交换数据等,常常因为字符集不同而导致迁移失败或数据库内数据变成乱码.现在我将oracle字符集相关的一些知识做个简 ...
- oracle共享池的结构,Oracle 10g内存结构之共享池的相关知识及使用简介
Oracle 10g内存结构之共享池的相关知识及使用简介 之前我们介绍了:Oracle 10g内存结构之系统全局区简介,本文我们接着介绍一下Oracle 10g内存结构之共享池的相关知识,接下来就让我 ...
- Oracle 字符集的查看和修改
一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库工 ...
- Oracle字符集的查看查询和Oracle字符集的设置修改
本文主要讨论以下几个部分:如何查看查询oracle字符集. 修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题. 一.什么是Oracle字符集 Oracle字符集是 ...
最新文章
- 脑电分析系列[MNE-Python-2]| MNE中数据结构Raw及其用法简介(更新)
- '+' 拼接字符串引起的小事故
- 【存储知识学习】第三章磁盘原理与技术3.8并行传输和串行传输and3.9 IOPS和带宽-《大话存储》阅读笔记
- 向预训练进一步:掩码式非自回归模型训练
- Web前端笔记-修改element ui中表格样式(透明、去横纵线等含修改思路)
- IDS与IPS的区别(HIDS、NIDS)
- 369寝室(数组、模拟)
- python 二维列表切片_Python中mutable与immutable和二维列表的初始化问题
- redis用zset做延时消息
- XNA实现不停循环的路的效果
- python socket tcp实战_Python socket.TCP_MAXSEG属性代码示例
- Java中synchronized与Lock的区别
- 如何从完好的数据文件恢复oracle数据库
- 微信小程序如何使用阿里矢量库
- ftp命令及dos中操作ftp命令
- 提权、渗透、经验、技巧总结大全三
- 文件管理大师android,文件管理大师
- WinRAR压缩软件去除广告
- PHP实验报告 点餐系统,点餐系统软件工程实验报告.doc
- Eclipse “cannot be resolved to a type”