引言
在 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.22sharecharsets |
+--------------------------+-----------------------------------------------------+
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