Mysql数据库保存和查询emoji和4字节字符处理


title: mysql 4字节表情和字,保存和查询
tags: [mysql, database]
categories: [idea, macosx, mysql]
date: 2018-11-13 00:15:30

请访问我的个人博客 sourcod

  • 最近在做古文图书数据处理项目,需要结构化后保存到表里。
  • 由于有古文字在保存数据时出现 Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...' 的错误。

查找资料后发现mysql utf-8字符集不支持4字节“字符”保存。

解决方案:

  1. 把数据库和表字符集改成utf8mb4
ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. 改完之后发现还不好使,在执行保存方法之前执行set names utf8mb4语句,就可以了。

保存成功后需要根据字段查询,又报错
Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation

解决方案:
查到资料使用二进制查询。

BINARY `nickname` LIKE '%?%';

这样

注意nickname两边需要加 ``

你可能感兴趣的:(database,mysql)