AL32UTF8和UTF8字符集
===========================================================
作者: yangtingkun(http://yangtingkun.itpub.net)
发表于: 2011.08.30 23:51
分类: ORACLE
出处: http://yangtingkun.itpub.net/post/468/523074
---------------------------------------------------------------
发表于: 2011.08.30 23:51
分类: ORACLE
出处: http://yangtingkun.itpub.net/post/468/523074
---------------------------------------------------------------
客户的环境需要使用UTF8字符集,那么是使用AL32UTF8还是直接使用UTF8,这是一个问题。
Oracle的UTF8字符集由来已久,至少在8的时候就已经存在了,而对应的是UNICODE 3.0。而AL32UTF8字符集是9i才出现的,其对应的是UNICODE 5.0。
这两种字符集的区别在于,UNICODE 5.0与3.0相比,又增加了一些新的补充字符。但是在实际当中,使用到这些新增字符的可能性非常小,因此绝大部分情况下,选择UTF8也是足够的。
而对于数据库的访问而言,二者还是存在一定差异的。前面提到了AL32UTF8字符集是9i才出现的,那么对于9i以后的版本访问没有任何问题,但是对于8i及以前的版本,则不认识这个字符集。这就使得8i及更低版本的客户端在访问9i以上AL32UTF8的数据库时,会碰到各种各样的问题。因此,Oracle建议在选择AL32UTF8和UTF8字符集时,最关键的一点就是是否有8i及以下版本的客户端会登录到数据库中,如果没有则可以选择AL32UTF8,如果存在这种客户端,那么需要选择UTF8字符集。
随着现在版本11g逐渐开始称为主流版本,8i客户端的情况已经越来越少见了,因此在11.2的DBCA中,UTF8已经不是推荐字符集列表中的一员了。