设置mysql的编码格式为utf8mb4可以兼容更多的字符,表情等,同时也包含了utf8字符编码。
设置编码格式为utf8mb4,通过show variables like 'character%'查询系统的编码格式
mysql> show variables like 'character%';
+--------------------------+---------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /opt/mysql/server-5.6/share/charsets/ |
+--------------------------+---------------------------------------+
通过如下sql设置编码
set character_set_client=utf8 ;
set character_set_connection=utf8 ;
set character_set_database=utf8 ;
set character_set_database=utf8 ;
set character_set_results=utf8 ;
set character_set_server=utf8 ;
set character_set_system=utf8 ;
还需要修改mysql根目录下的配置文件my.ini文件,特别是client的编码格式,设置后客户端传入的字符编码格式才是utf8mb4。
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
本机查询的结果:
客户端查询到的结果
可以看到客户端查询的结果是client和connnection的编码格式为utf8,但这并不影响使用。
值得注意的是表的编码格式从图形化界面中更改是没用的,需要在创建时设置编码格式是utf8mb4,如果已经有数据那么就备份后重新建表,创建时候就设置编码为utf8mb4。