在做公众号或者小程序的时候,经常会遇到存的用户的昵称是emoji表情的,这种在处理的时候比较麻烦。

1、存储问题

由于emoji表情4个字节的,而数据库中的utf-8的字符集实际上并不是真正的utf8,之后mysql又出了一个新的字符集utf8mb4,这个才是我们平时所说的utf-8。所以首先存储的话,需要保证数据库表的字符集以及该字段的字符集要是utf8mb4才可以。

2、查询问题

存储没问题了之后,查询的时候对于emoji的模糊查询会报错

[Err] 1267 - Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'

1.第一种解决方式:运用sql的CONVERT(字段 USING 字符集)函数进行强制转换

从报错信息入手,我从网上先开始找到的解决方式是把传进来的字段进行强制的字符集转换,类似于

t1.remark_name LIKE CONVERT(CONCAT("%", #{content}, "%") USING utf8mb4)
OR t2.nickname LIKE CONVERT(CONCAT("%", #{content}, "%") USING utf8mb4)

运用sql的CONVERT(字段 USING 字符集)函数进行强制转换,这样转换过后就不会报错了,但是还有问题就是对于emoji表情的搜索并不准确,输入表情什么都搜不到。

之后我又着手优化,在网上找到了另一种方式,这种方式可以搜索到表情。
2.第二种解决方式:在要搜索的字段前面加上关键字BINARY

BINARY t1.remark_name LIKE CONCAT("%", #{content}, "%")
OR BINARY t2.nickname LIKE CONCAT("%", #{content}, "%")

就是在要搜索的字段前面加上关键字BINARY,这样就能够搜索到表情。然而这种方式是区分大小写的,如果没有加这个关键词对于英文是可以不区分大小写进行搜索的,加了之后是严格区分大小写的。所以这个就要看大家自己取舍了。

emoji表情在数据库中如何查询相关推荐

  1. Java | MySQL Emoji表情写入数据库时报错问题解决,Incorrect string value: ‘\xF0\x9F\x98\x84\xF0\x9F...‘ for column

    现象: 将Emoji表情存入数据库时,报如下错误: Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x99\x83\xF ...

  2. mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法

    mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法: select a.nodeId,a.cpuCharge-b.cpuCharge cpuCharge, a.chargeTime fr ...

  3. 各个数据库中,查询前n条记录的方法

    一.各个数据库中,查询前n条记录的方法 1.SQL查询前10条的方法为: 1.select top X * from table_name 查询前X条记录,可以改成需要的数字,比如前10条. 2.se ...

  4. MySQL数据库中如何查询分组后每组中的最后一条记录

    MySQL数据库中如何查询分组后每组中的最后一条记录 方法一 select * from messages where id in (select max(id)fom messages group ...

  5. 让MySql支持Emoji表情(MySQL中4字节utf8字符保存方法)

    手机端插入Emoji表情,保存到数据库时报错: Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x84' ...

  6. Java Base64 加密解密 (数据加密或解决手机Emoji表情被数据库过滤掉的问题)

    2017年06月08日 10:15:19 glimmer_it 阅读数:359更多 个人分类: 安全加密 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  7. 关于微信一系列开发,emoji表情导致数据库报错个人解决办法

    用微信公众号开发举例,我们获取用户信息并且储存进数据库的时候,微信昵称由于可以使用emoji表情,utf-8编码可能2个字节.3个字节.4个字节的字符,但是MySQL的utf8编码只支持3字节的数据, ...

  8. iOS的emoji表情在数据库不支持UTF-8格式的处理

    前言 最近遇到苹果手机自带的emoji表情的处理问题,由于我们的数据库编码是GBK编码,而苹果的键盘自带的emoji表情,苹果系统的编码格式是UTF8编码,所以在把emoji表情存到GBK编码的数据库 ...

  9. 一起ORACLE数据库中数据查询结果不一致问题的排查过程

    一.问题描述 在某软件开发项目中,需要在ORACLE数据库中建立十张类型相同的员工信息表tb_employeeinfo0~tb_employeeinfo9,并建立向这十张表中插入数据的存储过程.ORA ...

最新文章

  1. linux program HEAP tracker
  2. MongoDB数据库(3.mongodb数据库的高级查询)
  3. 【Android】Android Service 服务
  4. c语言错误封装,C语言实现的封装,继承,多态
  5. 数学连乘和累加运算符号_2020中考数学 初中数学有理数计算(干货)
  6. 从0开始学习 GitHub 系列之「Git速成」
  7. python numpy 数据类型为python对象-关于Numpy数据类型对象(dtype)使用详解
  8. HTTP请求常见错误码大全
  9. .NET图表控件TeeChart Pro ActiveX使用教程:轴控制
  10. 关于NaN、undefined、null——基础必懂
  11. 孤岛双馈风电机组数学模型matlab,大型变速双馈风电机组动态稳定性仿真分析
  12. JS的DOM操作3--删除事件,注册事件与冒泡⭐⭐⭐(附带动图案例)
  13. 【VBA】通过VBA实现EXCEL全屏显示
  14. Hadoop技术优缺点详解
  15. python必备单词整理_别乱找了,Python常用单词Word合集,已经给你整理全了
  16. DeepDGA:基于生成对抗网络的DGA生成与检测
  17. 我所知道的富士康之二:出门
  18. 洗稿,技术上怎么判断文章相似性?
  19. 传统激光条纹中心提取算法研究现状
  20. 疯狂Java讲义(七)----第二部分

热门文章

  1. html 绘制篮球,7篮球运动.html
  2. uint16数据的读取以及转换为uint8数据显示
  3. 填坑—c语言写单片机中断程序无法返回到中断点—解决办法
  4. 中文实时语音识别引擎
  5. 【新智元峰会】德国AI教皇盛赞中国人工智能,25位AI领袖强势打造中国新智极...
  6. 累次积分怎么计算_请问累次积分和多重积分的区别
  7. turtle库基本介绍
  8. 《 C语言程序设计(第2版)》 读书笔记
  9. Learning latent geometric consistency for 6D object pose estimation in heavily cluttered scenes
  10. ABAQUS中的文件类型及功能