在项目中保存完数据发现到了MySQL中数据成了:????
1.先确认MySQL数据库字符集编码,本数据库为5.6版本
SHOW VARIABLES LIKE 'character_set_%';
发现server和database编码集为latin1,此编码集不支持中文
1.client:客户端请求数据库数据,响应的数据为该编码集
2.connection:收到客户端发送的数据,该数据转换为该编码集
3.database&server:默认数据库的字符集。(我这两个都为latin1,所以出现乱码)
4.filesystem:文件系统上的存储格式,默认为binary(二进制)。不用修改
5.results:字面意思,结果集的字符集
6.systen:系统的存储格式
7.dir:使用的字符集的文件路径
2.知道错在哪,修改就好了
SET character_set_server = utf8; //直接命令set解决不了问题,只是表面被修改
需要修改 my.ini 文件
我的文件路径在:C:\ProgramData\MySQL\MySQL Server 5.6
有些在ProgrmFile
添加这几行代码:
[mysql]
character_set_server=utf8
[mysqld]
character_set_server=utf8 collation-server=utf8_general_ci skip-character-set-client-handshake
我单独在[server],[mysql],[mysqld].中添加character_set_server=utf8,会出现重启不了服务的问题
skip-character-set-client-handshake:参考MySQL文档,这个配置表示,忽略客户端传递的编码 集,使用服务端的设定,当我们服务端的编码集都设置为utf8,就保持了格式的统一,解决乱码问题
collation-server=utf8_general_ci:设定字符序。
字符:人类语言中最小表义符号,如’A‘,'B'
给每个字符设定的不同的数值,用数值表示字符。如A->1,B->2
这一系列数值和字符所组成的就是字符集
字符序:是指同一字符集内字符之间的比较规则
确定字符序,确定字符之间的大小关系
字符序只能对应一个字符集,而一个字符集对应多个字符序
MySQL的字符序:
1._bin是用二进制存储并比较,区别大小写,存储二进制内容时使用
2.utf8_general_ci:校对速度快,但准确度稍差,使用中英文时使用
3.utf8_unicode_ci:准确度高,但校对速度稍慢,使用德法俄等外语时使用
3.重启MySQL服务,解决