数据库 mysql 5.7.26
创建java项目数据库时的字符集utf8,校对集utf8_general_ci
mysql 5.5.3版本之后支持了存储4个字节的utf8字符,字符集为utf8mb4,
当字符串中有特殊字符(如emoji表情符号,以及其他凡是转成utf8要占用4字节的字符),就会有问题,会报错Incorrect string value: ‘\xF0\x9F\x91\x93\xF0\x9F…’ for column ‘xxx’ at row 1
用户表的nickname
字段错emoji表情,报错了,以前项目使用的emoji-java转码方案,这次想换个个优雅一点儿的方法.
修改表字段nickname
的字符集位utf8mb4
校对集为utf8mb4_unicode_ci
ALTER TABLE 用户表 MODIFY 昵称字段 VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
操作用户表需要保存表情的字段时,请插入sql语句SET NAMES utf8mb4;
,以下是mybatis的xml代码示例
<insert id="insert">
SET NAMES utf8mb4;
INSERT INTO web_user ( id, nickname, qq_id, istatus, del_flag, create_date, update_date )
VALUES ( #{id}, #{nickname}, #{qqId}, #{istatus}, #{DEL_FLAG_NORMAL}, #{createDate}, #{updateDate} )
</insert>