问题背景:
项目中有个需求是app发送一个帖子,其中带有话题,服务器收到后需要先查看该话题是否存在,然后做出不同的业务。
这里查询话题的时候由于话题中会带有emoji表情的情况,当表情在做where条件的时候,发现只要表情的格式相同,内容不同的表情依然可以匹配上。例如xxx123和fff123(x,f均为表情)可以匹配上。
解决办法:
mysql表的default charset为utf8mb4,之前存储emoji表情时候就设置了,这里需要改emoji一列的collate 为utf8mb4_bin,collate为字符排序和比较,具体介绍网上比较多,这里改为bin可以看出是二进制比较,这样在比较emoji的时候就不会出现误匹配了