Oracle入门精读28-字符集 AL32UTF8与UTF8

字符(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设为和数据库字符集一样。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值