"); //-->
导语:
近几年,国产化创新潮流席卷全国,异构数据库迁移成了不少同行、客户争相讨论的话题,大家或争论方案、或求解答疑、或讨论产品,总之问题林林总总,涉及的面还很多,笔者也在近期的几个项目中做了几个异构数据库迁移的项目,项目过后感觉大家最感兴趣的还是异构数据库迁移有哪些注意事项,所以闲暇期间把自己做的一些项目中遇到的问题总结下来,供大家参考借鉴。
一、字符集转换问题
目前做字符集转换的工具不少,有操作系统自带的,也有各种脚本语言、高级语言自带的函数库,然而在进行跨字符集转换过程中其实有很多陷阱。通常,常用的字符集转换多数是GBK、GB2312、CP936、UTF8、UNICODE、LATIN等常用字符集之间的互相转换。因此,遇到不同字符集迁移的项目,建议还是要以实际项目情况出发合理选择方案。以下是笔者在处理不同字符集转换的几点建议:
■中文字段值域范围问题
中文不同的字符集按其编码规范占用的字节数并不一致,如GBK字符集下中文一个汉字占2字节,而UTF8字符集为3字节(少数占用4个字节)。此种情况下需要在模型设计过程中做好值域范围的调整,防止数据加工时报错。
■中文乱码问题
中文乱码是大家经常碰到的问题,多数是因为不同字符集覆盖范围不同,不同字符集在做转换时,因源和目标映射不对称,转码程序通常采用舍去不能转换的字符,或将其转换为预先指定的字符,此种情况下导致转换后的部分结果是乱码。以下为常用字符集范围及编码规范:
GB2312字符集
作用:国家简体中文字符集,兼容ASCII
位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,涵盖所有常用汉字
范围:高字节从A1到F7, 低字节从A1到FE
BIG5字符集
作用:统一繁体字编码
位数:使用2个字节表示,总计13053个汉字
范围:高字节从A1到F9,低字节从40到7E,A1到FE
GBK字符集
作用:它是GB2312的扩展,加入对繁体字的支持,兼容GB2312
位数:使用2个字节表示,可表示21886个字符
范围:高字节从81到FE,低字节从40到FE (7F 除外)
GB18030字符集
作用:它解决了中文、日文、朝鲜语等的编码,兼容GBK
位数:它采用变字节表示(1 ASCII,2,4字节)。可表示27484个文字
范围:1字节从00到7F; 2字节高字节从81到FE,低字节从40到7E和80到FE;4字节第一三字节从81到FE,第二四字节从30到39
UNICODE字符集
作用:为世界650种语言进行统一编码,兼容ISO-8859-1
位数:UNICODE字符集有多个编码方式,分别是UTF-8,UTF-16和UTF-32
范围:UNICODE中文字符范围是[U+4E00-U+9FBF],常用范围是[U+4E00-U+9FA5]
▲上下滑动查看
■ 转码处理策略
转码处理策略主要是指转码过程中对于异常字符的处理方式,通常在指定完目标字符集后对于异常字符的处理方式有3种:
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。