mysql乱码数据的修正

在一个rails应用中,使用mysql数据库,因为开发的比较早,当时对rails的中文问题处理了解不够,在database.yml中没有设置"encoding: utf8",这样虽然在rails应用中处理和显示中文都是没有问题的,但因为数据库默认使用的是latin1编码,导致在mysql客户端工具中不能正常显示和修改中文。
这个应用部署后一直这样将就着使用,后来因为需要在java程序中读取这个数据库中的数据,为简单起见,决定统一使用utf8编码。经过一番google和实际试验,采用以下步骤实现了旧的latin1数据转换成正常的utf8编码:
[i]以下内容中db_old为旧的乱码数据库名,db_new为utf8的新数据名[/i]
1、创建新的数据库:
[code]CREATE DATABASE db_new CHARACTER SET utf8 COLLATE utf8_general_ci;[/code]
2、使用mysqldump导出旧的数据:
[code]mysqldump -u root --password=xxxx --default-character-set=latin1 db_old > db.dump[/code]
3、使用ultraedit或其它文本编辑工具修改db.dump,在最前面加下以下内容:
[code]SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;[/code]
保存后退出编辑器
4、导入db.dump文件到新数据库:
[code]mysql -u root --password=xxxx db_new < db.dump[/code]

完成以上步骤后,使用mysql客户端工具连接到db_new之后,可以正常的读取和修改中文内容。
另外,使用utf8后,正确的备份数据库脚本应是:
[code]mysqldump -u root --password=xxxx --default-character-set=utf8 db_new > backup.dump[/code]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值