泉州北京网站建设,手机网站 普通网站,青岛网站权重提升,西安做网站的公司1、字符集的一些基本知识
字符集有很多种#xff0c;最初的字符集是ASCII#xff0c;由于ASCII支持的字符很有限#xff0c;因此随后又出现了很多的编码方案#xff0c;这些编码方案大部分都是包括了ASCII 的。EBCDIC编码是另一个比较基本的编码#xff0c;它的部分字符采…1、字符集的一些基本知识
字符集有很多种最初的字符集是ASCII由于ASCII支持的字符很有限因此随后又出现了很多的编码方案这些编码方案大部分都是包括了ASCII 的。EBCDIC编码是另一个比较基本的编码它的部分字符采用了和ASCII不同的编码值因此两者是不兼容的基本编码方案。采用EBCDIC编码的比较少目前主要是IBM 的系统采用如AS400及S390系统大部分的系统都是基于ASCII编码的。
由于亚洲国家的字符集相对复杂一些因此一般都使用了两个及以上的字节进行编码的方案。对于简体中文GB2312码是国家1981年实施的编码标准通行于大陆新加坡等地也使用此编码。GBK编码是GB2312码的扩展是1995年发布的指导性规范它在字汇一级支持 ISO/IEC 10646-1 和GB 13000-1 的全部中日韩 (CJK) 汉字(20902字)。目前最新的汉字字符集是2000年的GB18030它是取代GBK1.0的正式国家标准。该标准收录了27484个汉字同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。目前简体WINDOWS的缺省内码还是GBK。
由于编码方案太多且彼此之间不兼容互相之间存在冲突的情况即对于同一个编码数值在两种不同的编码方案中代表的是两个不同的字符。这样对于一些 WEB应用来说由于多种语言文字的同时使用及存储需要采用一种统一的字符集。
2、ORACLE数据库的字符集
ORACLE的字符集名字一般由以下部分组成语言或区域、表示一个字符的比特位数、标准字符集名称可选项S或C表示服务器或客户端。ORACLE字符集UTF8与UTFE不符合此规定其它基本都是这种格式。
set nls_langAMERICAN_AMERICA.UTF8
set nls_langSIMPLIFIED CHINESE_AMERICA.UTF8
对于US7ASCII表示区域是US用7个比特位表示一个字符标准的字符集名称为ASCII。
对于中文字符集ZHS16GBK表示简体中文ZHT为繁体中文一个字符需要16位比特标准的字符集名称为GBK。而ZHS16CGB231280 表示简体中文一个字符需要16位比特标准的字符集名称为GB231280属于我们前面提过的1981年发布的GB231280标准。虽然我们说GBK编码标准是GB2312编码标准的扩展但是数据库字符集ZHS16GBK与ZHS16CGB231280之间却不是严格的超集与子集的关系主要是有些汉字的编码在两个字符集中的数值是不同的因此它们进行字符集转换时会出现问题。
ORACLE数据库有国家字符集national character set 与数据库字符集(database character set ) 之分。两者都是在创建数据库时需要设置的。国家字符集主要是用于NCHAR、NVARCHAR、NCLOB类型的字段数据而数据库字符集使用很广泛它用于CHAR、VARCHAR、CLOB、LONG类型的字段数据表名、列名、PL/SQL中的变量名输入及保存在数据库的SQL和PL/SQL的源码。
ORACLE支持的Unicode字符集有以下几种下面的列表给出了字符集的名称、对应的数据库版本范围、采用的Unicode的版本。
AL24UTFFSS 是ORACLE第一种支持Unicode的字符集从7.2版本开始使用但是它支持的Unicode版本为1.1因此从9i开始就不支持此字符集了。
UTF8 :是ORACLE从ORACLE8开始使用的属于UTF-8编码的字符集从ORACLE8.0到ORACLE8.16Unicode版本为2.1而ORACLE817到10g采用的Unicode标准为3.0
UTFE 用于EBCDIC码平台上的数据库Unicode字符集。因此它属于专用系统使用的字符集其它属性与UTF8基本相同。
AL32UTF8 是从ORACLE9开始使用的属于UTF-8编码的字符集与UTF8相比它采用的Unicode版本更新在10g版本中使用的是Unicode 4.01标准而UTF8因为兼容性的考虑在10g版本中用的是Unicode 3.0标准 。
AL16UTF16 是ORACLE第一种采用UTF-16编码方式的字符集从ORACLE9开始使用是作为缺省的国家字符集使用它不能被用作数据库的字符集。这是因为数据库的字符集决定了SQL与PL/SQL源码的编码方式对于UTF16这种使用固定的两个字节来表示英文字母的编码方案来说确实不适于用作数据库的字符集ORACLE目前采用的数据库字符集都是基于ASCII或EBCDID作为子集的编码方案。
3、如何选择合适的数据库字符集
3.1、数据库需要存储的数据类型是字符集选择的首要考虑目标。
对于只存储英文信息的数据库等来说一般采用US7ASCII或WE8ISO8859P1等单字节的字符集就比较合适在性能和空间上也是最优。同样存储了中文信息的数据库如果采用单字节的字符集是不合适的。
3.2、字符集的选择需要优先考虑应用程序的需要。
目前出于国际化的需要软件需要可以对不同的语言文字进行处理尤其一个系统中需要容纳多种语言文字的时候一般都会采用Unicode这样的通用解决方案即使会有一些空间和运行效率的损失也是值得的。此时数据库字符集建议可以采用AL32UTF8 或UTF8编码一种比较理想的模式就是由程序负责编码格式的转换而数据库只提供一个透明的数据存储。