sbysky 发表于 2006-3-6 21:06:07

请教一个MySQL备份后UTF-8编码错乱的问题

RHEL4的系统,有一次系统坏了后使用Rescue系统盘进入后备份了mysql数据库
备份命令是一般的:#mysql -u root -p mydb > mydb.sql
数据库中文是用的UTF-8编码,以前一直用PhpMyAdmin备份没有出过问题
可是这次使用命令备份后,发现备份文件中中文出现了一下乱码情况,有些中文不能正常
显示,请教大家有没有遇到过类似情况,寻求解决的方法,谢谢了

涩兔子 发表于 2006-3-7 09:27:05

以下来源于MySQL5.0官方手册,希望解决您的问题

1.MySQL备份
MySQL备份使用mysqldump --default-character-set=utf8 -u root -p mydb > mydb.sql

2.MySQL恢复
mysql --default-character-set=utf8 -u root -p mydb < mydb.sql

如果您的sql文件中DEFAULT_CHARSET=latin1或其他不是utf8的字符集,请参考:
中国Linux公社从gb2312转成utf8成功经验
piconv -f gb2312 -t utf8 old.sql > new.sql

sbysky 发表于 2006-3-7 10:20:28

我的数据库中是GB2312和UTF-8代码同时都有的,有一些表中文是GB2312的,另一些则是UTF-8的,所以在建立库的时候我没有改变字符集,使用的是默认的latin1_swedish_ci
这样的话您所说的piconv -f gb2312 -t utf8 old.sql > new.sql 是否还能使用?
非常谢谢你,这些我先去试一下,看看有没有改善
另外我想说的是,我RHEL4备份是控制台是UTF-8编码的,重装系统后恢复还是UTF-8的,没有变化,但奇怪的是我把sql文件下载到windows下后打开查看(用UTF-8编码)那些字符就已经是乱码了,是不是备份的时候出的问题?

涩兔子 发表于 2006-3-8 09:07:07

1.分开备份
mysqldump --default-character-set=gb2312 --tables GB2312table -u root -p mydb > mydbGB2312table.sql

mysqldump --default-character-set=utf8 --tables UTF8table -u root -p mydb > mydbUTF8table.sql

2.分开导入
mysql --default-character-set=gb2312 -u root -p mydb < mydbGB2312table.sql
mysql --default-character-set=utf8 -u root -p mydb < mydbUTF8table.sql

3.现在您不能转码
因为中国Linux公社是全部选择了utf8编码的程序,包括phpBB2的utf8版本。您原先“数据库中GB2312和UTF-8同时都有”,说明还存在gb2312编码的程序,转码了程序就显示乱码了

把sql文件下载到和RHEL4相仿的Fedora Core4上面,用vi打开看看

vyouzhi 发表于 2006-3-29 10:04:02

多谢了
我也是在导出时忘了加上编码
页: [1]
查看完整版本: 请教一个MySQL备份后UTF-8编码错乱的问题