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两边需要加 ``

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值