mysql设置utf8mb4字符编码

1、utf8和utf8mb4字符编码

2、查看mysql数据库编码

1.查看编码html

#显示全部编码和字符校对的参数
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

总共有如下这些项:mysql

Variable_name Value
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8mb4
character_set_system utf8
collation_connection utf8mb4_unicode_ci
collation_database utf8mb4_unicode_ci
collation_server utf8mb4_unicode_ci

这里写图片描述

1、character_set_client
  主要用来设置客户端使用的字符集。

2、character_set_connection
  主要用来设置链接数据库时的字符集,若是程序中没有指明链接数据库使用的字符集类型则按照这个字符集设置。

3、character_set_database
  主要用来设置默认建立数据库的编码格式,若是在建立数据库时没有设置编码格式,就按照这个格式设置。

4、character_set_filesystem
  文件系统的编码格式,把操做系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不作任何转换的。

5、character_set_results
  数据库给客户端返回时使用的编码格式,若是没有指明,使用服务器默认的编码格式。

6、character_set_server
  服务器安装时指定的默认编码格式,这个变量建议由系统本身管理,不要人为定义。

7、character_set_system
  数据库系统使用的编码格式,这个值一直是utf8,不须要设置,它是为存储系统元数据的编码格式。

8、character_sets_dir
  这个变量是字符集安装的目录。

咱们只关注下列变量是否符合咱们的要求
character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server
下列三个系统变量咱们不须要关心,不会影响乱码等问题
character_set_filesystem
character_set_system
character_sets_dirweb

3、修改编码为utf8mb4

修改my.cnf文件。加入如下内容,而后重启数据库:systemctl restart mysqldsql

[mysqld]
character-set-server=utf8mb4 [mysql] default-character-set=utf8mb4 [client] default-character-set=utf8mb4

4、已有的库和表更改成utf8mb4

以上方式更改编码对于已有的库和表是不产生影响的,须要咱们单独进行转换。数据库

#更改数据库编码:
ALTER DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

#更改表编码:
ALTER TABLE 表名CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 
若有必要,还能够更改列的编码

参考:建立支持emoji表情的MySQL数据库(utf8mb4)bash