FastAdmin MYSQL数据库输出中文乱码问题

最近在学习Kubenetes,把Nginx,PHP,MySQL都以集群的方式部署到了Kubenetes下。

部署完成之后,找了个FastAdmin的项目来测试下有没有什么问题。

其它问题就不说了,主要是中文乱码的问题。

这套代码在别的地方都是没问题的,所以程序上的问题,包括页面编码的问题都可以排除。

只要不涉及数据库的地方,中文都是正常显示,直接在控制器中echovar_dump中文都是正常的,这说明操作系统对中文的支持基本是完备的,问题应该出在MySQL存储的字符集或数据库连接的字符问题上。

由于创建数据库时直接指定了utf8bm4编码,所以数据库存储本身的问题不大,保险起见还是检查下。从mysql命令行进入数据库,直接查询数据,中文正常显示,看来也不是MySQL存储的字符集问题,那么问题就很明显了,出在数据库连接上。

在PHP中显式的调用set names utf8也不起作用,只能修改MySQL配置了。

依旧在mysql命令行里执行操作,show variables '%char%';,出来好几个,基本都是latin1,只有一个是utf8,问题果然出在这!

找到MySQL的配置文件,在[mysqld]里添加上

character-set-server=utf8

另外再加上

[client]
default-character-set=utf8

对于普通的MySQL服务器,直接重启就好了,由于我用的是Kubenetes部署的,MySQL配置写在了ConfigMap中,好在也没什么生产性的数据,所以直接推倒重来了,问题解决!

Leave a Comment

豫ICP备19001387号-1