在很多社交平台,博客上,可以看到有好多表情符号,这些表情符号是由unicode编码定义的,并不是我们以为的图片。在mysql中,如果插入的这些数据,即使数据库字符是utf8编码,也会报错。这是因为utf8编码不能包含这些特殊表情符号,得使用utf8mb4. 以下是解决步骤:
1. 修改数据库配置文件 my.ini/my.conf(linux)
[mysql]
default-character-set=utf8mb4
character-set-server=utf8mb4
collation_server=utf8mb4_unicode_ci
[mysqld]
character-set-server=utf8mb4
init-connect="SET NAMES utf8mb4"
在配置文件中修改后,以后添加的table, 字段一般就是utf8mb4了
2. 修改数据库,数据表,字段的编码
如果之前数据库不是utf8mb4,则需要单独修改table和字段
修改某张表的某个字段
ALTER TABLE mytable MODIFY COLUMN `content` MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
修改整个数据库
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8mb4_unicode_ci;
3.在编程代码中使用合适的连接方式
以java jdbc为例,jdbcUrl为
jdbc:mysql://localhost:3306/mydb?useUnicode=yes&characterEncoding=UTF-8
以上三步,最终结果要确保 数据库,数据表,数据列的字符编码为utf8mb4, 校对规则为utf8mb4_unicode_ci。