论坛首页 编程语言技术论坛

mysql乱码数据的修正

浏览 2854 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-16  
在一个rails应用中,使用mysql数据库,因为开发的比较早,当时对rails的中文问题处理了解不够,在database.yml中没有设置"encoding: utf8",这样虽然在rails应用中处理和显示中文都是没有问题的,但因为数据库默认使用的是latin1编码,导致在mysql客户端工具中不能正常显示和修改中文。
这个应用部署后一直这样将就着使用,后来因为需要在java程序中读取这个数据库中的数据,为简单起见,决定统一使用utf8编码。经过一番google和实际试验,采用以下步骤实现了旧的latin1数据转换成正常的utf8编码:
以下内容中db_old为旧的乱码数据库名,db_new为utf8的新数据名
1、创建新的数据库:
CREATE DATABASE db_new CHARACTER SET utf8 COLLATE utf8_general_ci;

2、使用mysqldump导出旧的数据:
mysqldump -u root --password=xxxx --default-character-set=latin1 db_old  > db.dump

3、使用ultraedit或其它文本编辑工具修改db.dump,在最前面加下以下内容:
SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;

保存后退出编辑器
4、导入db.dump文件到新数据库:
mysql -u root --password=xxxx db_new < db.dump


完成以上步骤后,使用mysql客户端工具连接到db_new之后,可以正常的读取和修改中文内容。
另外,使用utf8后,正确的备份数据库脚本应是:
mysqldump -u root --password=xxxx --default-character-set=utf8 db_new  > backup.dump
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics