循序渐进Oracle:数据库管理、优化与备份恢复
上QQ阅读APP看书,第一时间看更新

3.1 字符集的基本知识

如果从头说起,字符集最早的编码方案来自于与ASCII,这也是最常见的编码方式。该方案起源于20世纪60年代初期,最初是美国国会图书馆制定用来作为美国图书馆界书目交换的共同标准,最后完善成为美国的国家标准 ASCII(American Standard Code for Information Interchange),之后进一步演变成世界性的计算机字符编码标准ISO646(其全名为7-bit coded character set for information interchange),于是成为计算机编码方案的基础。

ASCII第一次作为规范标准是在1967年发表,最后一次更新则是在1986年,至今为止共定义了128个字符,其中33个字符无法显示,这33个字符多数是陈废的控制字符,控制字符的用途主要是用来操控已经处理过的文字,在33个字符之外的是95个可显示的字符,包含用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。

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

由于英文字符一般是以一个字节来存储的,7 位的编码方案最多只能代表 128 个字符;经过扩展的8位编码方案也只能代表256个字符,这远远不能满足计算机发展的需要,对于亚洲国家复杂的字符存储需要更多的码位,于是各种编码方案随之而生。

为了容纳全世界各种语言的所有字符和符号,解决不同编码之间的兼容和转换问题,1991年1月,十多家公司共同出资,组建Unicode协会,随后Unicode编码产生了。

Unicode 协会的口号是:给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么程序,不论什么语言。

最初Unicode编码使用2-Byte(16bit)来进行编码,但是最多只能容纳65536个字符,仍然不够使用,后来进行了扩充,也就是 Unicode 3.1 标准,增加了额外的补充字符定义,现在Unicode 5.2标准已经发布,具体可以参考Unicode官方站点(http://www.unicode.org)。

Unicode编码方案主要有3个实施标准:UTF-8、USC-2和UTF-16。Oracle从7.2开始支持UTF-8编码,提供Unicode编码支持。

按照各种标准的含义,Oracle 推荐,如果数据库需要存放不同语言的不同符号和字符,建议使用Unicode编码方案。诚然,Unicode方案可以表示更多的字符,但是由于多位的存储,需要额外的存储空间和网络传输,所以选择最适合的数据库字符集仍然需要慎重考虑。