Mysql的乱码字符集修改方法
Mysql的乱码问题在开发过程中会经常遇到, 今天帮朋友导入在ubuntu的操作系统上搭建了一套lamp的运行环境, 然后导入别人给他设计好的数据库之后,查询的时候发现了乱码问题,所以把这次解决乱码的方法记录下来.
操作方法
- 01
首先安装好mysql数据之后,为了三码统一修改mysql的默认的字符集(latin1)和校对规则为utf-8. 登录: mysql -u root -p密码 查看校对规则集: show variables like 'collation_%'; 查看字符集: show variables like 'character_set_%';
- 02
其次找到mysql的配置文件my.cnf,ubuntu系统用agt-get intall 安装之后默认是在/et/mysql/my.cnf 命令: cd /etc/mysql/ cp -p my.cnf my.cnf.default vim my.cnf 备注: 分别在追加,然后保存 [client] default-character-set=utf8 [mysqld] character-set-server = utf8
- 03
重启mysql之后再次查看字符集和校对规则是否修改为utf-8 重启命令: service mysql restart
- 04
上面的查询发现现在存在乱码现象,接下来我们修复乱码,导出表结构,并把导出的文件的字符集修改为自己想要的字符集 命令: mysqldump -uroot -p --default-character-set=utf8 -d weipan > weipan_table.sql 备注: ----default-character-set=utf8 表示设置成什么字符集连接 -d 表示只导出表结构,不导出数据
- 05
确保导出的时候数据不在更新,然后导出所有记录,并打开data.sqlb把原来的SET NAMES latin1修改为SET NAMES utf8 命令: mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=latin1 weipan > data.sql 备注: --quick:该选项用于转储大的表.它强制mysqldump从服务器一次一行地检索表中的行而不是检索所有行,并在输出前将它缓存到内存中. --extended_insert:使用包括几个VALUES列表的多行INSERT语法,这样是转储文件更小,重载文件时可以加速插入. --no-create-info:不要重新创建每个转储表的CREATE TABLE 语句 --default-character-set=latin1:按照原有的字符集导出所有数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码
- 06
连接数据库并创建数据库,然后导入表结构和表数据 命令: mysql -u root -p密码 create database weipan2; \q; mysql -uroot -p weipan2 < weipan_table.sql mysql -uroot -p weipan2 < data.sql
- 07
最后登录数据库确认以前的乱码是否存在 命令: mysql -uroot -p密码; use weipan2; select * from w_user limit 3;