MySQL 5.7.x版本修改字符集(Win11环境)

1.前置问题

  • mysql5.7.*版本默认使用的字符集是latin1(拉丁文),当添加中文数据时,出现字符串值不正确。
    image

  • mysql5.7.*版本默认使用latin1,是因为MySQL是由瑞典人开发的,所以默认使用欧洲的字符集。

  • 查看数据表和数据库的默认字符集
    数据表:
    image
    数据库:
    image

  • 查看所有变量的字符集
    image

  • 校对所有字符集
    image

2.修改默认字符集

找到MySQL的数据文件存储目录,找到my.ini文件并打开。
一般数据文件存储目录默认安装在C:\ProgramData\MySQL\MySQL Server 5.7,否则在自定义存储目录查看。

  1. 在文件找到 [mysql] ,在下方添加:
[mysql]
# 默认字符集
default-character-set=utf8
  1. 在文件找到 [mysqld],在下方添加:
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
  1. 最后使用命令重启MySQL服务使配置生效(重启需要管理员权限)
C:\Windows\System32>net stop MySQL57
MySQL57 服务正在停止.
MySQL57 服务已成功停止。


C:\Windows\System32>net start MySQL57
MySQL57 服务正在启动 .
MySQL57 服务已经启动成功。

也可以在windows服务列表中找到MySQL服务进程重启,简单易懂。

  1. 再次查看字符集&系统变量
    查看修改字符集之前创建的数据库和表还是使用之前默认的字符集:
    image
    查看修改字符集之后创建的数据库和表使用的字符集:
    image
    查看修改后系统变量字符集:
    image

  2. 验证插入中文数据
    image

在my.ini中添加默认字符集之前已创建的数据库和数据表如何修改默认字符集?
  1. 登录MySQL
mysql -u root -P 3306 -h localhost -p
  1. 修改数据表的默认字符集
# 修改表的默认字符集为utf8
mysql> alter table 数据表名 charset utf8;

# 查看数据表的默认字符集
mysql> show create table 数据表名;
  1. 修改数据库的默认字符集
mysql> alter database 数据库名 charset utf8;

# 查看数据库的默认字符集
mysql> show database 数据库名;
关于MySQL8.x和MySQL5.x使用字符集UTF8和UTF8MB4的说明:

什么是UTF-8?

UTF-8 是一种变长的字符编码,它是 Unicode 的一种实现方式。在 UTF-8 编码中,每个字符可以使用 1 到 4 字节来表示。UTF-8 编码的最大特点是向后兼容 ASCII,即所有标准的 ASCII 字符(U+0000 到 U+007F)仍然使用 1 字节表示。

UTF-8 能够表示几乎所有的语言字符,并且它已经成为 Web 上最广泛使用的字符编码标准。

1 字节:ASCII 字符(0x00 到 0x7F)
2 字节:较常见的字符,如拉丁字母、汉字等(0x80 到 0x7FF)
3 字节:扩展字符,如一些汉字和其他中等使用频率的字符(0x800 到 0xFFFF)
4 字节:稀有字符,如表情符号、一些少数民族的字符等(0x10000 到 0x10FFFF)

什么是UTF-8MB4?

UTF-8MB4 是 UTF-8 的一个增强版,支持完整的 Unicode 字符集,最大支持 4 字节的字符。它可以存储任何 Unicode 字符,包括一些特殊字符,如表情符号、古代文字等。

4 字节:UTF-8MB4 引入了对超过 3 字节字符(例如表情符号和一些少数民族的字符)的支持,这些字符超出了 UTF-8 的支持范围,因此需要使用 4 字节来存储。
在 MySQL 中,UTF-8 实际上并没有完全遵循 Unicode 标准,最多支持 3 字节的字符,而 UTF-8MB4 解决了这个问题,提供了完整的 Unicode 支持。

在 MySQL 中使用 UTF-8 和 UTF-8MB4

UTF-8 的字符集对于很多应用来说已经足够,但随着应用程序和网站逐渐支持表情符号和更多的 Unicode 字符(例如古代文字、特殊符号),UTF-8 已经不再能满足所有需求。

UTF-8MB4 完全支持 Unicode 标准,特别是对于现代 Web 应用,支持表情符号和特殊符号的需求越来越高。例如,社交平台、聊天应用、用户评论等都需要能够处理表情符号和其他特殊字符。

因此,如果你的应用中包含用户输入的文本(例如社交网络、即时消息系统等),使用 UTF-8MB4 是更加推荐的选择。

所以从MySQL 8.x开始使用utf8mb4作为默认字符集,而MySQL 5.x一直使用latin1作为默认字符集,但是从MySQL 5.5.3版本开始支持utf8mb4字符集。

posted @ 2025-12-29 16:59  Evan1024  阅读(5)  评论(0)    收藏  举报