
- 1 -
Oracle 数据库多语言入库问题的解决方案
杨毅峰
1
,邹仕洪
1
,林宇
2
,刘苑琦
2
1
北京邮电大学网络与交换技术国家重点实验室,北京 (100876)
2 北京网秦天下科技有限公司,北京 (100013)
E-mail:wilsonandjoker@sina.com
摘 要:本文通过研究 Oracle 数据库如何成功实现多语言入库,给出了一种实现多国语言信
息存储的基本方法,该方法解决了非中文语言入库时出现的乱码问题。随着企业在发展过程
中业务的国际化,业务信息的存储也从单一的本国语言发展成多国语言共存的局面。Oracle
数据库作为国际化的数据库平台展现出了强大的全球化技术优势。在使用 Oracle 存储多国
语言信息的过程中难免遇到由于字符集的不兼容而导致无法正确存储数据的问题,例如泰
文、韩文、阿拉伯文等在默认字符集为 ZHS16GBK,国家字符集为 AL16UTF16 的数据库的
入库需要特殊的方法。
关键词:ORACLE9I,泰文入库,多国语言存储,数据库乱码
中图分类号:TP311
1. 引 言
2009 年根据 IDC 报告显示 Oracle 在软件市场上位居第三,其数据库在全球中的影响以
及使用都是十分广泛的,其全球化的基础是 Oracle 数据库字符集,即 Oracle 全球化支持
(Globalization Support),Oracle 可以支持多种语言及字符集,Oracle9i 支持 57 种语言、88 个
国家地域、235 种字符集
[1]
。由于 Oracle 字符集种类多,且在存储、检索、迁移 Oracle 数据
时多个环节与字符集的设置密切相关,而且由于业务的国际化,需要多种语言共存,在实际
的应用中,数据库开发和管理人员经常会遇到有关 Oracle 字符集方面的问题。
笔者通过对网上资源的搜索,有的文章或者博客中给出了建议,但是并没有发现有小语
种语言入库的良好解决方案。经过笔者的研究和实践,终于解决一个实际的问题——泰语等
入库。该方案通过使用 Oracle 的 sqlloader 方法,通过具体的环境设置成功实现了多国语言
入库。
2. 字符集
字符(Character)是文字与符号的总称,包括文字、图形符号、数学符号等。一组抽象字
符的集合就是字符集(Charset)。字符集(也称字元集,Character Set)就是字符编码表
(codepage),一个字符不论英文、中文、韩文、泰文、日文等任何语言,他们在计算机系统
内存或硬盘中通过二进制的字节(Byte)保存,这个二进制的编码就是字符编码(也称内码),
字符集就是字符与内码的对应(映射)表
[2]
。
各个国家语言的差异,使得字符集本国化。使用最广泛的 ASCII 编码,由美国国家标
准局(即 ANSI)制定,适用于所有拉丁、英文字符。中国大陆使用 GB2312,GBK,GB18030 等
字符集,这些字符集包含所有汉字字符的内码,其中 GBK,GB18030 称为大字符集,对繁体
中文也进行了编码。香港、台湾、澳门地区使用 Big5 编码,Big5 收录了繁体中文(有些繁
体与中国大陆繁体字符有差异)的编码,不包含简体中文的字符编码。泰文使用 ISO 8859-1
的字符集
[3]
。其他如日文、俄文等都有自己国家制定的字符集,用来保证计算机系统能正确
中国科技论文在线
评论