mysql字符集问题

字符集是一套文字符号及其编码、比较规则的集合

mysql数据库字符集包括字符集(character)和校对规则(collation),其中字符集定义mysql数据字符串的存储方式,校对规则定义比较字符串的方式。 

常见字符集

长度

说明

Gbk

2

不是国际标准

Utf-8

3

中英文混合建议,目前使用较多

Latin1

1

mysql默认字符集

Utf8mb4

4

Utf-8 unicode 移动互联网

如果处理各种各样的文字发布到不同国家地区,应选择utf-8

如果只需支持中文,并且数据量大性能要求高,可选GBK

处理移动互联网,可能需要使用utf8mb4

字符集总结:

1.客户端设置set names 字符集、mysql命令指定字符集登录(临时修改client、connection和results的结果),可以确保插入后的中文不会出现乱码,但是两种方式都是临时生效,且对设置之前插入的中文无效

2.在mysql的my.cnf配置文件[client]模块下设置default-character-set=字符集,相当于set names 字符集,且永久生效,且无需重启服务,对设置之前插入的中文无效

3.在mysql的my.cnf配置文件[mysqld]模块下设置character-set-server=字符集,重启后生效后,之后创建的数据库和表默认都是这个字符集,对设置之前插入的中文无效

修改字符集

alter database 库名 character set 字符集,对数据库中新建的表的字符集进行修改

alter table 表名 character set 字符集,对表中新插入记录的字符集进行修改

对于已有数据的数据库,必须先将数据导出,修改字符集后再进行导入

1.导出建库及建表语句,sed批量修改为对应字符集

2.导出所有mysql数据

3.修改mysql服务端和客户端编码为对应字符集,重启服务

4.删除原有的库、表及数据

5.导入新的建库及建表语句

6.导入所有数据

原文地址:https://www.cnblogs.com/Forever77/p/10049442.html