[转帖]Oracle入门精读28-字符集 AL32UTF8与UTF8

oracle,入门,精读,字符集,al32utf8,utf8 · 浏览次数 : 0

小编点评

**字符集** 字符集是一个套法则,使用该法则能够对自然语言的字符的一个集合,与其它的一个集合(如数值编码)进行配对。 **字符编码** 字符编码是一套法则,使用该法则能够对自然语言的字符的一个集合,与其它的一个集合进行配对。 **字符集** 字符集是按照一定的字符编码方案,对一组特定的符号,分别赋予不同数值编码的集合。 **常见的字符集** * ASCII * ZHS16GB231280 * ZHS16GBK **环境变量 NLS_LANG** `NLS_LANG`环境变量用于向Oracle指示客户端操作系统的字符集, 设置客户端的`NLS_LANG`参数。 **字符集命名规则** * `<Language><bitsize><encoding>   `含义: * `<语言><比特位数><编码> ` 例如:`AL32UTF8` **其他** * `LENGTHB`或`VSIZE`函数求得是占用字节数。 * `LENGTH`函数求得是占用字符数。

正文

字符(Character)

字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。

字符编码(Character Encoding)

是一套法则,使用该法则能够对自然语言的字符的一个集合,与其它的一个集合(如数值编码)进行配对。

即在符号集合与数字系统之间建立对应关系。

字符集(Character set)

实质就是按照一定的字符编码方案,对一组特定的符号,分别赋予不同数值编码的集合。

常见的字符集有ASCII,ZHS16GB231280,ZHS16GBK等。

Oracle数据库字符集

Oracle数据库最早支持的编码方案是US7ASCII

后来为了支持全球化,采用国家语言支持(NLS),用户可用本国语言和格式来存储、处理和检索数据。目的为用户提供自己熟悉的数据库母语环境,诸如日期格式、数字格式和存储序列等。

Oracle字符集的命名规则

<Language><bitsize><encoding>   含义:<语言><比特位数><编码>

例如:AL32UTF8  AL,指使用所有语言; 32,指32位; UTF8,指编码。

环境变量:NLS_LANG=American_America.AL32UTF8, American表示语言;America表示地区;AL32UTF8字符集类型。

UTF-8编码

兼容ASCII编码;拉丁文、希腊文等使用两个字节;包括汉字在内的其它常用字符使用三个字节;剩下的极少使用的字符使用四个字节。

字符集中汉字编码占用几个字节

NLS_CHARACTERSET 为AL32UTF8或UTF8,即一个汉字占用三到四个字节

NLS_CHARACTERSET为ZHS16GBK,即一个字符占用两个字节

查看当前系统采用的字符集

SQL> select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';

当前系统的字符集为:AL32UTF8

LENGTHB或者VSIZE函数求得是占用字节数,

LENGTH函数求得是占用字符数

SQL> select lengthb('中')  from  dual;

字符集AL32UTF8编码汉字占用3个字节

SQL> select length('中')  from  dual;

字符集AL32UTF8编码汉字占用1个字符

数据库中的字节或字符存储

Oracle一般来说默认是存储字节(BYTE,如下:

所以,CHAR(12 BYTE)  CHAR(12 CHAR)的意义就不一样的。

 

客户端操作系统字符集

客户端操作系统以哪种字符编码存储字符

cmd > chcp

代码页936(字符集为ZHS16GBK)

 

小结

NLS_LANG参数(客户端) 用于向Oracle指示客户端操作系统的字符集,

  1. 设置客户端的NLS_LANG为客户端操作系统的字符集。
  2. 如果服务端的Oracle数据库字符集等于NLS_LANG参数(客户端),数据库和客户端传输字符时不作任何转换
  3. 如果客户端操作系统的字符集和数据库字符集间无法正确转换,则应该首先改变客户端终端的字符集,而不是简单地把NLS_LANG设为和数据库字符集一样。

 

</article>

与[转帖]Oracle入门精读28-字符集 AL32UTF8与UTF8相似的内容:

[转帖]Oracle入门精读28-字符集 AL32UTF8与UTF8

字符(Character) 字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。 字符编码(Character Encoding) 是一套法则,使用该法则能够对自然语言的字符的一个集合,与其它的一个集合(如数值编码)进行配对。 即在符号集合与数字系统之间建立对应关系。 字符集(C

[转帖]JVM 问题诊断快速入门

https://zhuanlan.zhihu.com/p/110197145 JVM 全称为 Java Virtual Machine,翻译为中文 "Java 虚拟机"。本文中的JVM主要指 Oracle 公司的 HotSpot VM, 版本是 Java8(JDK8、JDK1.8 是同样的版本)。如

[转帖]Oracle Linux 9 - Oracle 提供支持 RHEL 兼容发行版

https://sysin.org/blog/oracle-linux-9/ Oracle Linux 是一个开放、全面的操作环境,提供虚拟化、管理、云原生计算工具和操作系统,通过一个统一的支持解决方案满足您的业务需求。Oracle Linux 与 Red Hat Enterprise Linux

[转帖]Oracle数据库的两种授权收费方式详解

https://www.jb51.net/article/265823.htm 现在Oracle有两种授权收费方式,按CPU(Process)数和按用户数(Named User Plus),前一种方式一般用于用户数不确定或者用户数量很大的情况,典型的如互联网环境,这篇文章主要介绍了Oracle数据库

[转帖]Oracle jdk与OpenJdk

https://www.jianshu.com/p/ca5e7f78eb4e ————Oracle JDK———————jdk历史叫Sun Jdk,后来被Oracle收购后现在叫做Oracle JDKOracleJDK由Oracle公司开发维护,该公司是Sun许可证,基于Java标准版规范实现。它以

[转帖]oracle清理临时表空间

https://blog.51cto.com/u_11310506/2357625 为了防止临时表空间无限制的增加,我采用隔一段时间就重建临时表空间的方法,为了方便,我保留两组语句,轮流执行即可, 假定现在临时表空间名称是temp,新建一个tempa表空间,删除temp表空间,方法如下: alter

[转帖]Oracle、MySQL、PG是如何处理数据库“半页写”的问题的?

数据库“断页”是个很有意思的话题,目前任何数据库应该都绕不过去。我们知道数据库的块大小一般是8k、16k、32k,而操作系统块大小是4k,那么在数据库刷内存中的数据页到磁盘上的时候,就有可能中途遭遇类似操作系统异常断电而导致数据页部分写的情况,进而造成数据块损坏,数据块损坏对于某些数据库是致命的,可

[转帖]Oracle查看所有用户及其权限

https://www.cnblogs.com/huazhixu/p/15788803.html Oracle查看所有用户及其权限:Oracle数据字典视图的种类分别为:USER,ALL 和 DBA.USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息ALL_*:有关用户可以访问的对象的

[转帖]Oracle打开审计

0、审计安装11g默认是开始审计的,有审计记录,所以不需要安装,如果查询发现表不存在,则需要安装。使用此命令安装即可,安装完成后重启数据库。SQL> @/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/cataudit.sql;1、开启审计SQL> al

[转帖]Oracle 用户密码中包括了“@”字符串的错误提示解决方法

Oracle 用户密码设置了带有“@”符号,正常登陆总是无法登陆,提示无法解析的连接字符串错误 解决办法:1:修改密码:修改密码使密码中不包括@符号;2:增加转义即可,在密码前后增加 \"示例如下: CMD中输入:C:\Users\Administrator> exp system/\"ABC@X1