mysql乱码怎么解决,mysql中文乱码踩坑记录

最近在给管理系统添加个的操作日志功能将日志记录到mysql里,然而获取的汉字显示为???。

于是网上搜索解决办法,‘彻底解决mysql中文乱码’、‘完美解决mysql中文乱码问题’、‘mysql乱码解决’...,相关的资料多如牛毛,基本叙述就是:

1、查看查看数据库与服务端的字符集设置

show variables like "%colla%";show varables like "%char%";

2、修改global范围字符编码

set global character_set_database=gbk;
set global character_set_server=gbk;
show variables like '%char%';

3、linux环境下my.cnf文件、win环境下my.ini文件修改,然后重启mysql。

default-character-set=gbk、character_set_server=gbk

但是,以上方法都无济于事。

一、首先,页面编码和数据编码格式要一致,页面编码gbk,那么数据编码也应该gbk,怎么设置数据编码,我们需要先了解数据存储编码部分。参见:MySQL的字符编码体系(一)——数据存储编码

默认数据库编码的设置分为四个层次:server级、数据库级、数据表级和列级。越里层优先级越高,所以应该检查修改每个层级的编码。

二、检查各层次数据编码

1、查看库字符集

show create database 库名;

2、查看表编码

show table status from 库名 like '表名';

3、查看某库的所有表编码

show full columns from 表名;

三、修改编码

1、修改库的数据编码

ALTER DATABASE 库名 DEFAULT CHARACTER SET 字符集;

2、修改mod_log表的数据编码

ALTER TABLE mod_log DEFAULT CHARACTER SET gbk;

3、修改user_name列的数据编码

ALTER TABLE mod_log CHANGE COLUMN user_name user_name varchar(15) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL; 

4、修改linux环境下my.cnf文件、win环境下my.ini文件修改,重启数据库。显示正常:

针对乱码的一些建议

1、建议在安装Mysql下一步的时候,设置合理的默认字符集。

2、创建库时指定字符集。

3、在不了解的情况下,切勿照搬网上的文章修改字符编码,可能会导致更严重的乱码。

这次踩坑归根结底是自己没有系统深入学习。学东西是个不断积淀的过程,最好的方法不是快餐式的对付,而是要循序渐进的理解和实践,别无捷径。

猜你喜欢

转载自blog.csdn.net/weixin_53545232/article/details/117982929