Mysql数据库保存和查询emoji和4字节字符处理
- 最近在做古文图书数据处理项目,需要结构化后保存到表里。
- 由于有古文字在保存数据时出现
Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...'
的错误。
查找资料后发现mysql utf-8字符集不支持4字节“字符”保存。
解决方案:
把数据库和表字符集改成utf8mb4
1
2ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;改完之后发现还不好使,在执行保存方法之前执行
set names utf8mb4
语句,就可以了。
保存成功后需要根据字段查询,又报错Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation
解决方案:
查到资料使用二进制查询。1
BINARY `nickname` LIKE '%𪑵%';
这样