加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

oracle对数据unicode化的支持

(2007-08-25 20:04:19)
标签:

IT/科技

知识/探索

感悟随笔

科学

分类: 数据库/数据仓库
 Unicode编码方案主要有三个实施标准:
                 UTF-8
                 USC-2
                 UTF-16

    如果开发的项目需要国际化,那么所选择的数据库必须提供Unicode编码支持.数据的Unicode化可以表示更多的字符,Oracle从7.2开始支提供Unicode编码支持。Oracle支持两种Unicode数据存储方法。

    第一种被称为Unicode数据库解决方案,它可以创建一个基于Unicode的数据库,使用UTF-8编码格式,不仅为CHAR和VARCHAR2字符数据类型进行编码,而且还对所有的SQL名和字面值进行编码。为了实施Unicode数据库解决方案,将你的数据库字符集配置为AL32UTF8,这是UTF-8的Oracle名称。
    另一种Unicode数据存储方法是Unicode数据类型解决方案,在该解决方案中UTF-16数据被保存在NCHAR、NVARCHAR和NCLOB等Unicode数据类型中。为了实施该解决方案,将你的国家字符集设置为AL16UTF16,这是UTF-16的Oracle名称。
一般情况下,UTF-8得到了更广泛的使用。

国际化项目开发时还要注意两种情况:

1.字符集转换
    在b/s项目中,数据在不同阶段需要用不同的字符编码表示。从一种编码转换到另一种编码的过程就叫做字符集转换,在使用一种字符集的客户程序与使用另一种字符集存储数据的数据库通信时,最需要进行字符集转换.当数据从客户程序被发送到数据库时,就会进行字符集转换。

2.字符串处理
   许多人认为,支持 UTF-8 数据库意味着将存储要求提高一倍或两倍,并且必须处理非常复杂的字符串处理。如果数据类型是char,varchar,text等,确实需要增加存储要求,但如果是非字符数据字段,如数字、日期、时间戳和二进制数据(如图像和文档)则不需要增加存储要求。
   字符数据类型 (CHAR, VARCHAR2,NCHAR,NVARCHAR2)的默认长度是指字节的长度
如果在表中定义一个数据类型为char(10)的字段,则指这个字段的默认长度是10个字节而非10个字符如果字符集设为ascii,那么一个字节就是一个字符.
如果字符集设为gb2312,那么两个字节才能保存一个字符.
下表是数据Unicode化后能保存的字符长度

      UTF8 (1 to 3 bytes)  AL32UTF8 (1 to 4 bytes)  AL16UTF16 ( 2 bytes)
             MIN      MAX         MIN      MAX             MIN     MAX

CHAR         2000      666        2000      500            N/A      N/A

VARCHAR2     4000     1333        4000     1000            N/A      N/A

NCHAR        2000      666        N/A      N/A             1000    1000

NVARCHAR2    4000     1333        N/A      N/A             2000    2000

               

(N/A 指不可能出现的情况)

 

0

阅读 收藏 喜欢 打印举报/Report
前一篇:数据仓库简介
后一篇:mysql5体验
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有