mysql中文乱码或者中文报错
当出现中文乱码或者执行包含中文的语句报错时,十有八九就是编码的问题,我们可以执行下面语句查看编码:
SHOW VARIABLES LIKE '%char%'
显示
其中character_set_server是服务器编码:latin1,这个也是mysql默认的编码,我们可以使用set命令修改这个编码:
SET character_set_server = utf8;
但是这个set修改是临时的,如果mysql重启之后,这个编码会重新设置成默认编码latin1
所以我们最好是去修改配置文件中的默认编码:
先进入mysql的主目录,在目录下会有个my.cnf文件,打开查看里面有没有mysqld节点配置,我这里是没有的,里面是:
!includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/
想必这两个指的是mysql配置文件的目录,然后分别进入这两个目录,发现/etc/mysql/mysql.conf.d/目录下的mysqld.cnf文件里有mysqld节点配置,然后将上面配置加上(存在则修改)即可:
如果都没有找到mysqld节点,那直接在my.cnf中加上mysqld节点,再将上面的配置加上(存在则修改)即可
修改完成需要重启下mysql服务:service mysql restart
注意,这里修改之后,只对重新创建的表才能生效,对于已经存在的表,我们修改手动修改它的编码:
-- utf8_general_ci表示utf8编码,latin1_swedish_ci表示latin1编码,是默认编码 -- 查看表编码 SELECT TABLE_COLLATION FROM information_schema.`TABLES` WHERE TABLE_NAME='table_name'; -- 查看列编码 SELECT COLLATION_NAME FROM information_schema.`COLUMNS` WHERE TABLE_NAME='table_name' AND COLUMN_NAME='column_name';
-- 修改表编码 ALTER TABLE [表名] CONVERT TO CHARACTER SET utf8; -- 修改列编码 ALTER TABLE [表名] MODIFY [列名] [类型] CHARACTER SET utf8;
另外,如果修改了mysql的服务器的字符编码为utf8,但是还是现实中文乱码,那么可能是客户端编码问题,执行 SHOW VARIABLES LIKE '%char%' 查看character_set_client参数是否是utf8,如果不是,则在配置文件中添加节点:
[client] default-character-set=utf8
一个专注于.NetCore的技术小白
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY