MySQL 中文乱码问题
引言
在 MySQL 8 之前的版本中,MySQL 的默认字符集一直是 latin1,这种默认的字符集编码方式是不支持中文的,可以说这对于使用汉语的中国程序员来说很不友好。虽然可以通过修改字符集编码方式为 utf-8 来支持中文,但是需要在很多地方修改字符集编码是一件让人心烦的事情,一旦忘记修改就会出现讨厌的中文乱码问题。
好消息是 MySQL 8 终于将该死的默认的字符集编码方式 latin1 设置为 utf-8,这算是对中国程序员做了一件好事。
查看 MySQL 字符串编码方式
- 打开 CMD 窗口,输入 mysql 登录命令启动 mysql 客户端
mysql -uroot -p123456
- 查看字符集编码
mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set, 1 warning (0.01 sec)
mysql> show variables like 'character_set%';
+--------------------------+-----------------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | E:\Program Files (x86)\mysql-8.0.22\share\charsets\ |
+--------------------------+-----------------------------------------------------+
8 rows in set, 1 warning (0.11 sec)
缺省是 latin1 编码,会导致中文乱码。
修改字符集编码
- 修改数据库的编码
mysql> alter database 数据库名 character set utf8;
- 修改数据库表的编码
mysql> ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
修改配置文件字符集编码
打开 MySQL 的 my.ini 配置文件,修改如下:
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
character_set_server=utf8
init_connect='SET NAMES utf8'
重启 MySQL,这样可以确保 MySQL 缺省字符集编码方式是 utf8
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)