在数据库创建初期未修改字符集,运行一段时间后发现字符集不能满足需求,需要修改,又不能放弃之前的数据,这就需要进行字符集修改,常用的alter database character set *
或者alter table tablename character set *
修改,不能修改已经存在的数据编码格式,这里介绍一个方法可以解决这个问题。
1.导出表结构:
mysqldump -uroot -p --default-character-set=gbk -d databasename > creattab.sql
2.vim creattab.sql
编辑表定义语句,将字符集改为需要的字符集

3.导出所有记录:
mysqldump -uroot -p --no-create-info --extended-insert --default-character-set=latin1 databasename > data.sql
4.修改记录的字符集vim data.sql
,即更改SET NAMES LATINS
为SET NAMES *
改成自己想用的字符集
5.使用新的字符集创建database:
create database DBname default charset gbk;
6.将表结构导入新的DB中:
mysql -uroot -p DBname < creattab.sql
7.将记录导入到DB中:
mysql -uroot -p DBname < data.sql
注意: 新的字符集最好为原字符集的超集,或者确保新的字符集的范围比原字符集大,否则,可能倒是记录乱码,丢失记录。