字符集问题的初步探讨(二)-数据库的字符集
作者:eygle
版权声明:转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
链接:
http://www.eygle.com/archives/2004/09/nls_character_set_02.html

2、数据库的字符集
字符集在创建数据库时指定,在创建后通常不能更改,所以在创建数据库时能否选择一个正确的字符集就显得尤为重要。在创建数据库时,我们可以指定字符集(CHARACTER SET)和国家字符集(NATIONAL CHARACTER SET)。
字符集用来存储:CHAR、VARCHAR2、CLOB、LONG等类型数据;用来标示诸如表名、列名以及PL/SQL变量等;SQL和PL/SQL程序单元等。
国家字符集用以存储:NCHAR, NVARCHAR2, NCLOB等类型数据。
这些设置在数据库创建时指定,我们可以看一下数据库的创建脚本:

Oracle字符集问题的初步探讨(二)-数据库的字符集connect SYS/change_on_install as SYSDBA
Oracle字符集问题的初步探讨(二)-数据库的字符集
set echo on

Oracle字符集问题的初步探讨(二)-数据库的字符集spool E:\oracle\ora92\assistants\dbca\logs\CreateDB.
log
Oracle字符集问题的初步探讨(二)-数据库的字符集startup nomount pfile
="E:\oracle\admin\eygle\scripts\init.ora";
Oracle字符集问题的初步探讨(二)-数据库的字符集
CREATE DATABASE
 eygle
Oracle字符集问题的初步探讨(二)-数据库的字符集MAXINSTANCES 
1

Oracle字符集问题的初步探讨(二)-数据库的字符集MAXLOGHISTORY 
1
Oracle字符集问题的初步探讨(二)-数据库的字符集MAXLOGFILES 
5
Oracle字符集问题的初步探讨(二)-数据库的字符集MAXLOGMEMBERS 
3
Oracle字符集问题的初步探讨(二)-数据库的字符集MAXDATAFILES 
100
Oracle字符集问题的初步探讨(二)-数据库的字符集DATAFILE 
'E:\oracle\oradata\eygle\system01.dbf' SIZE 250M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
Oracle字符集问题的初步探讨(二)-数据库的字符集EXTENT MANAGEMENT LOCAL
Oracle字符集问题的初步探讨(二)-数据库的字符集
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE 'E:\oracle\oradata\eygle\temp01.dbf'
 SIZE 40M REUSE AUTOEXTEND
Oracle字符集问题的初步探讨(二)-数据库的字符集
ON NEXT
 640K MAXSIZE UNLIMITED
Oracle字符集问题的初步探讨(二)-数据库的字符集UNDO TABLESPACE "UNDOTBS1" DATAFILE 
'E:\oracle\oradata\eygle\undotbs01.dbf'
 SIZE 50M REUSE AUTOEXTEND
Oracle字符集问题的初步探讨(二)-数据库的字符集
ON NEXT
 5120K MAXSIZE UNLIMITED
Oracle字符集问题的初步探讨(二)-数据库的字符集
CHARACTER SET
 ZHS16GBK
Oracle字符集问题的初步探讨(二)-数据库的字符集
NATIONAL CHARACTER SET
 AL16UTF16
Oracle字符集问题的初步探讨(二)-数据库的字符集LOGFILE 
GROUP 1 ('E:\oracle\oradata\eygle\redo01.log'
) SIZE 10M,
Oracle字符集问题的初步探讨(二)-数据库的字符集
GROUP 2 ('E:\oracle\oradata\eygle\redo02.log'
) SIZE 10M,
Oracle字符集问题的初步探讨(二)-数据库的字符集
GROUP 3 ('E:\oracle\oradata\eygle\redo03.log'
) SIZE 10M;
Oracle字符集问题的初步探讨(二)-数据库的字符集spool 
off

Oracle字符集问题的初步探讨(二)-数据库的字符集
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。

相关文章:

  • 2022-02-08
  • 2022-01-05
  • 2022-12-23
  • 2021-10-12
  • 2021-10-11
  • 2022-01-21
  • 2021-12-20
  • 2022-12-23
猜你喜欢
  • 2021-08-09
  • 2021-08-02
  • 2022-12-23
  • 2021-11-08
  • 2021-11-17
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案