问题描述

最近在对线上排错过程中发现很多入库时产生的错误日志,表现形态如下

Incorrectstringvalue:'\xF0\x9F\x91\x8D\xE6\x94...'forcolumn'column_x'atrow1

在查阅资料后发现这其实是一种emoji表情符号,普遍存在iOS与android系统中,而这种特殊字符合作用的Unicode 6标准来统一,采用4个bytes来存储一个emoji表情,而将这种表情不处理直接存储到MySQL5.5以下的版本会报错,当然想要MySQL存储这种字符也不困难,只需要修改数据库字符集为utf8mb4即可,但数据回传给网页或者移动客户端时则需要做兼容处理,所以我们暂时忽略这种需求,直接将其过滤掉.

解决方案

对于字符串处理,首选就是正则表达式去处理,而在android系统中可以自定义InputFilter去过滤需要处理掉的字符串,代码如下

nputFilteremojiFilter=newInputFilter(){

@Override

publicCharSequencefilter(CharSequencesource,intstart,intend,Spanneddest,intdstart,

intdend){

}

};

随后我查阅了emoji的wikipedia与Github,从中提取出表情的一个大概unicode范围,由于Java可以直接对unicode进行匹配,这样我们可以很省事直接写出Pattern即可,代码如下

InputFilteremojiFilter=newInputFilter(){

Patternemoji=Pattern.compile(

"[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",

Pattern.UNICODE_CASE|Pattern.CASE_INSENSITIVE);

@Override

publicCharSequencefilter(CharSequencesource,intstart,intend,Spanneddest,intdstart,

intdend){

MatcheremojiMatcher=emoji.matcher(source);

if(emojiMatcher.find()){

return"";

}

returnnull;

}

};

基本上这样就能过滤掉emoji表情了

mysql 过滤emoji表情_MySQL中emoji表情过滤相关推荐

  1. mysql 过滤微信昵称表情_PHP正则过滤处理微信昵称中emoji字符的方法

    本文实例讲述了PHP正则过滤处理微信昵称中emoji字符的方法.分享给大家供大家参考,具体如下: 今天刚做了一个微信应用,在获取微信昵称的过程中报错了,经查原因是微信昵称中包含emoji字符,在写入数 ...

  2. mysql获取当月最后一天_mysql中获取本月第一天、本月最后一天、上月第一天、上月最后一天

    mysql获取当月最后一天_mysql中获取本月第一天.本月最后一天.上月第一天.上月最后一天等等 转自: https://blog.csdn.net/min996358312/article/det ...

  3. mysql 苹果表情_mysql 插入emoji表情的时候报错问题。(苹果手机)

    一.问题现象 保存微信用户昵称到数据库,ios用户的昵称包含表情,插入数据库出错. 二.分析 使用JS过滤emoji表情的主要原因:input标签中输入emoji表情,提交表单后插入数据库报错. 原因 ...

  4. mysql sql先后执行_MySQL中SQL语句执行顺序

    (7) SELECT (8) DISTINCT (1) FROM (3) JOIN (2) ON (4) WHERE (5) GROUP BY (6) HAVING (9) ORDER BY (10) ...

  5. mysql日期格式化季度_mysql中常用日期比较与计算函数

    MySql中时间比较的实现 unix_timestamp() unix_timestamp 函数可以接受一个参数,也可以不使用参数. 它的返回值是一个无符号的整数.不使用参数,它返回自1970年1月1 ...

  6. mysql添加临时索引_mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  7. mysql sql 时间比较_mysql中sql语句进行日期比较

    这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DAY ...

  8. mysql存储emoji表情_MySQL中支持emoji表情的存储

    由于需要实现emoji表情评论的功能,所以数据库需要支持emoji表情的存储,根据查询的资料最终实现了该功能,现将实现的过程以及过程遇到的一些问题记录下来,供大家参考和交流. mysql的utf8编码 ...

  9. mysql存储ios表情_MySQL中支持emoji表情的存储

    由于需要实现emoji表情评论的功能,所以数据库需要支持emoji表情的存储,根据查询的资料最终实现了该功能,现将实现的过程以及过程遇到的一些问题记录下来,供大家参考和交流. mysql的utf8编码 ...

最新文章

  1. node mysql 批量写入_请问如何使用node.js在MySQL中进行批量插入
  2. angular element()
  3. java 修改ini文件_Java读取和修改ini配置文件
  4. 谭浩强 C语言程序设计第五版 第六章 习题 答案
  5. word 宏命令 表头与图名的设置
  6. Day11 Dear Japanese English Learners
  7. python打印乘法口诀表
  8. hive查看表中列的信息命令_Linux查看硬件信息之dmidecode命令详解
  9. 小强的HTML5移动开发之路
  10. NowCoder--Protoss and Zerg
  11. “远程主机强迫关闭了一个现有连接”问题的解决方法之一
  12. GB、Gb、MB、Mb知识扫盲
  13. 郑州大学计算机系好请假吗,郑州大学网上信息
  14. MySQL本天早上8点到明早8点_从早上8点到晚上8点共多少小时,算式进
  15. 带你一起Piu Piu Piu
  16. scikit-learn机器学习 读书笔记(二)
  17. PTA L1-062 幸运彩票 C++实现
  18. html网页制作是什么,DynamicHTML是什么,能具体解释一下么本人初学网页制作, 爱问知识人...
  19. 2022第23届广州国际热处理、工业炉展览会
  20. java uuid jug实例(采用开源jug)

热门文章

  1. World Locking Tools for Unity (五)安装部分
  2. 使用vba操作工作表,实现报表汇总
  3. “将就的人生,其实沉没成本非常高”
  4. 李晋的YIM每日签名
  5. C语言内联汇编使用方法
  6. Bug随手记----关于java.lang.IllegalStateException: The following classes could not be excluded because the
  7. (数字ic验证)从零开始的apb_watchdog验证模块搭建(二、apb直接发送激励与寄存器模型加入)
  8. ICME2021:基于机器学习的VVC帧内编码码率控制
  9. 《《《翻译》》》Navigation Through Cluttered Environments
  10. Python之pandas学习【5】:导入导出数据