QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2884|回复: 4

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

[复制链接]
发表于 2006-3-6 21:06:07 | 显示全部楼层 |阅读模式
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
回复

使用道具 举报

 楼主| 发表于 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打开看看
回复

使用道具 举报

发表于 2006-3-29 10:04:02 | 显示全部楼层
多谢了
我也是在导出时忘了加上编码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-3-29 15:25 , Processed in 0.107447 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表