问题描述:
创建MySQL表的时候设置为utf-8;使用SHOW VARIABLES LIKE 'char%';命令查看后,发现character_set_database和character_set_server也是utf8;但是select操作之后,数据库中的中文字段依旧显示不正常。
在使用中发现此问题的时候,想到这是一个简单的问题,本应该自己就可以解决掉的,但因为粗心或者知识点不足导致最终没有直接解决。解决此问题应该关注的是character_set_results而不是我在问题描述中所提到的character_set_database和character_set_server。如图,可以看到character_set_results字段的value为latin1,而不是utf8。
最终请教了MySQL大神,他告诉我执行命令set names utf8;观察下。
执行上述命令后,再次执行select语句观察结果,中文字段显示正常。
总结:
要保证select的返回与程序编码一致,即character_set_results与程序编码一致.
如果出现中文乱码,如何解决?执行命令:SHOW VARIABLES LIKE 'char%'; 观察是否Value都是utf8。
如果character_set_client character_set_connection character_set_results不是,则需要执行set names utf8; 之后再次查看结果。
关于set names utf8;查看下面的链接:https://blog.csdn.net/qq_39521554/article/details/78925440
自己当时看到的相关链接,待认真学习后对其进行总结。
set names utf8;背后的原理:
https://blog.csdn.net/qq_39521554/article/details/78925440
https://blog.csdn.net/u012410733/article/details/61619656
https://blog.csdn.net/luoweifu/article/details/883249
utf8与utfmb8区别:
每天学习一点点。