WEB开发网
开发学院数据库Oracle Oracle数据库字符集转换规律全面剖析 阅读

Oracle数据库字符集转换规律全面剖析

 2008-11-18 13:00:53 来源:WEB开发网   
核心提示: 备份数据库后删除原数据(可物理备份,如使用Export,Oracle数据库字符集转换规律全面剖析(3),请注意确保字符集不发生转换或数据无损失); 使用Internal用户更新sys.props$表中的字符集: Update sys.props$ set name=‘Dest.

备份数据库后删除原数据(可物理备份,如使用Export,请注意确保字符集不发生转换或数据无损失);

使用Internal用户更新sys.props$表中的字符集:

Update sys.props$ set name=‘Dest.CharSet’
Where name=‘NLS_CHARACTERSET’; COMMIT;

重启数据库;

恢复数据。

下面字符集之间的转换是可行的:

字符集子集向字符集父集转换是可行的,如ZHS16CGB231280向ZHS16GBK转换;而字符集父类向字符集子集进行转换时,会损失部分数据。

只包含英文字符数据的双字节字符集也可向单字节字符集转换,如ZHS16GBK(English Only)可以向US7ASCII正确转换。

编码范围相同的单字节字符集之间通常可以进行相互转换。

请注意,这里所说的没有数据损失,是指一种字符集A转换成另一种字符集B之后,可以再从字符集B正确转换成字符集A或字符集B能够正确表示字符集A中转换过来的数据。

字符集对程序的影响

根据一个字符需要多少位字节来表示,可以把字符集分为单字节字符集和多字节字符集。其中,单字节字符集又分为7位字符集和8位字符集。单字节7位编码字符集有US7ASCⅡ,单字节8位编码字符集有符合ISO 8859-1标准规定的WE8ISO8859P1等。多字节编码又分为固定长度(长度大于或等于2)编码模式和不固定长度编码模式。多字节编码字符集中的ZHS16GBK、ZHS16CGB231280、JA16SJIS等是采用两个字节表示一个字符的字符集,又叫双字节字符集。

一个英文字母是一个字符,一个中文汉字是几个字符呢?我们知道,一个中文汉字是双字节字符,但它有几个字符与其数据库字符集有关。如果数据库字符集使用单字节US7ASCII,则一个中文汉字是二个字符;如果数据库字符集使用双字节字符集ZHS16GBK,则一个中文汉字是一个字符。有关这一点可以使用Oracle的函数Substr得到证明。

上一页  1 2 3 4  下一页

Tags:Oracle 数据库 字符集

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接