转自:http://hi.baidu.com/66_com
引言
我现在所在的项目组需要把mysql的数据处理后导入到oracle数据库中,在此期间遇到了数据中文乱码问题。下面是我对这个问题的总结。
1、linux操作系统,mysql,oracle安装时字符集的选择。
我的建议是这三者的字符集保持一致,全为utf-8或gdk或gb2312。如果有特殊要求,三者不同也没有关系
我的建议是
Oracle -------àutf-8 ,gb2312,gbk
Linux---------àgbk,gb2312
Mysql--------àlatin1(默认)
A、Linux在安装的时候会给你一个选项让你选择安装的字符集。
B、Oracle安装过程中有一个“常见字符集”的选项。
C、Mysql安装时则要选择 二进制安装包,在configure使加上参数--with-charset 和 --with-collation ,例如:
./configure --with-charset=utf-8
Mysql 默认字符集为latin1,支持中文,所以可以一半选择默认安装即可。
2、字符集更改
如果你的字符集进行不正当的配置,则可以通过下面的方法进行更正。
2.1 linux操作系统字符集更改
在/etc/sysconfig/i18n
通过以下的改变来修改系统的本地化设置:
ja_JP.eucJP 变为 ja_JP.UTF-8
ko_KR.eucKR 变为 ko_KR.UTF-8
zh_CN.GB18030 变为 zh_CN.UTF-8
zh_TW.Big5 变为 zh_TW.UTF-8
使用在 ~/.i18n 中的本地化设置的用户应该在默认的情况下升级到使用 UTF-8 码。
iconv 工具可以被用来把使用原始编码(例如 eucJP, eucKR, Big5, or GB18030)的文件转换成为UTF-8 编码:
iconv -f -t UTF-8 -o
##################################################
以下是的我的Redhat Enterprise Linux AS 4中/etc/sysconfig/i18n的内容:
##################################################
LANG="zh_CN.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:zh_TW.UTF-8:zh_TW:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
##################################################
更改后关闭当前端口重新登入即可。
2.2 mysql数据库字符集的更改
现在网上有三种解决方法
查看Mysql字符集命令
show variables like'character_set%';
A、重新编译安装,见mysql安装部分内容
B、修改/etc/my.cnf文件中的default-character-set=gbk #或gb2312,big5,utf8. 然后重新启动mysql. (用rpm包安装的mysql没有my.cnf文件,可以从其他数据库拷贝一个,但是