欢迎光临
我们一直在努力

字符集问题的初步探讨(二)-数据库专栏,SQL Server

建站超值云服务器,限时71元/月

字符集问题的初步探讨(二)

–数据库的字符集

saturday, 2004-09-11 11:38 eygle

 原文发表于itpub技术丛书《oracle数据库dba专题技术精粹》,未经许可,严禁转载本文.
原文链接:

http://www.eygle.com/special/nls_character_set_02.htm

2. 数据库的字符集

 
字符集在创建数据库时指定,在创建后通常不能更改,所以在创建数据库时能否选择一个正确的字符集就显得尤为重要。
在创建数据库时,我们可以指定字符集(character set)和国家字符集(national character set)。
字符集用来存储:
     char, varchar2, clob, long等类型数据
     用来标示诸如表名、列名以及pl/sql变量等
     sql和pl/sql程序单元等
国家字符集用以存储:
     nchar, nvarchar2, nclob等类型数据

这些设置在数据库创建时指定,我们可以看一下数据库的创建脚本:

connect sys/change_on_install as sysdba
set echo on
spool e:\oracle\ora92\assistants\dbca\logs\createdb.log
startup nomount pfile=”e:\oracle\admin\eygle cripts\init.ora”;
create database eygle
maxinstances 1
maxloghistory 1
maxlogfiles 5
maxlogmembers 3
maxdatafiles 100
datafile e:\oracle\oradata\eygle ystem01.dbf size 250m reuse autoextend on next 10240k maxsize unlimited
extent management local
default temporary tablespace temp tempfile e:\oracle\oradata\eygle\temp01.dbf size 40m reuse autoextend
on next 640k maxsize unlimited
undo tablespace “undotbs1” datafile e:\oracle\oradata\eygle\undotbs01.dbf size 50m reuse autoextend
on next 5120k maxsize unlimited
character set zhs16gbk
national character set al16utf16
logfile group 1 (e:\oracle\oradata\eygle\redo01.log) size 10m,
group 2 (e:\oracle\oradata\eygle\redo02.log) size 10m,
group 3 (e:\oracle\oradata\eygle\redo03.log) size 10m;
spool off
exit;

以上用粗体显示的就是对我们至关重要的字符集设置。

在创建数据库的过程中,在以下界面选择你的字符集,对于简体中文平台,缺省的字符集是:zhs16gbk

 

一旦你的字符集选定了,数据库中能够存储的字符就受到了限制,所以你选择的字符集的应该可以容纳所有你将用到字符。

常见的中文字符集有:

 

zhs16cgb231280 cgb2312-80 16-bit simplified chinese mb, ascii
zhs16gbk gbk 16-bit simplified chinese mb, ascii, udc

其中gb2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集–基本集》,由国家标准总局发布,
1981年5月1日实施,通行于大陆。新加坡等地也使用此编码。
gbk编码是1995年12月颁布的指导性规范。
gbk与国家标准 gb 2312-80 信息处理交换码所对应的、事实上的内码标准兼容;同时,在字汇一级支持 iso/iec 10646-1 和
gb 13000-1 的全部中日韩 (cjk) 汉字(20902字)。包含了更多的编码。

但是我们说,zhs16gbk 并非是zhs16cgb231280的严格超集(虽然后者的汉字在前者中都存在,但是同样的编码在不同两个
字符集中可能表达不同的汉字),所以在做数据库字符转换时仍然需要特别注意。

 

oracle的字符集命名遵循以下命名规则:

 

<language><bit size><encoding>
即: <语言> <比特位数><编码>
比如: zhs · 16 ·gbk

需要说明的是,有些字符集命名违背了这个规范,oracle8/oralce8i中的utf-8是第一个打破这个命名规范的字符集。
我们可以看到一类字符集以 al开头,如:
     al16utf16
其中 al代表 all,指适用于所有语言(all languages),按照这个标准当年utf-8本应被命名为al24utf8。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 字符集问题的初步探讨(二)-数据库专栏,SQL Server
分享到: 更多 (0)

相关推荐

  • 暂无文章