mysql 过滤emoji表情_MySQL中emoji表情过滤
问题描述
最近在对线上排错过程中发现很多入库时产生的错误日志,表现形态如下
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表情过滤相关推荐
- mysql 过滤微信昵称表情_PHP正则过滤处理微信昵称中emoji字符的方法
本文实例讲述了PHP正则过滤处理微信昵称中emoji字符的方法.分享给大家供大家参考,具体如下: 今天刚做了一个微信应用,在获取微信昵称的过程中报错了,经查原因是微信昵称中包含emoji字符,在写入数 ...
- mysql获取当月最后一天_mysql中获取本月第一天、本月最后一天、上月第一天、上月最后一天
mysql获取当月最后一天_mysql中获取本月第一天.本月最后一天.上月第一天.上月最后一天等等 转自: https://blog.csdn.net/min996358312/article/det ...
- mysql 苹果表情_mysql 插入emoji表情的时候报错问题。(苹果手机)
一.问题现象 保存微信用户昵称到数据库,ios用户的昵称包含表情,插入数据库出错. 二.分析 使用JS过滤emoji表情的主要原因:input标签中输入emoji表情,提交表单后插入数据库报错. 原因 ...
- 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) ...
- mysql日期格式化季度_mysql中常用日期比较与计算函数
MySql中时间比较的实现 unix_timestamp() unix_timestamp 函数可以接受一个参数,也可以不使用参数. 它的返回值是一个无符号的整数.不使用参数,它返回自1970年1月1 ...
- mysql添加临时索引_mysql 中添加索引的三种方法
在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...
- mysql sql 时间比较_mysql中sql语句进行日期比较
这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DAY ...
- mysql存储emoji表情_MySQL中支持emoji表情的存储
由于需要实现emoji表情评论的功能,所以数据库需要支持emoji表情的存储,根据查询的资料最终实现了该功能,现将实现的过程以及过程遇到的一些问题记录下来,供大家参考和交流. mysql的utf8编码 ...
- mysql存储ios表情_MySQL中支持emoji表情的存储
由于需要实现emoji表情评论的功能,所以数据库需要支持emoji表情的存储,根据查询的资料最终实现了该功能,现将实现的过程以及过程遇到的一些问题记录下来,供大家参考和交流. mysql的utf8编码 ...
最新文章
- node mysql 批量写入_请问如何使用node.js在MySQL中进行批量插入
- angular element()
- java 修改ini文件_Java读取和修改ini配置文件
- 谭浩强 C语言程序设计第五版 第六章 习题 答案
- word 宏命令 表头与图名的设置
- Day11 Dear Japanese English Learners
- python打印乘法口诀表
- hive查看表中列的信息命令_Linux查看硬件信息之dmidecode命令详解
- 小强的HTML5移动开发之路
- NowCoder--Protoss and Zerg
- “远程主机强迫关闭了一个现有连接”问题的解决方法之一
- GB、Gb、MB、Mb知识扫盲
- 郑州大学计算机系好请假吗,郑州大学网上信息
- MySQL本天早上8点到明早8点_从早上8点到晚上8点共多少小时,算式进
- 带你一起Piu Piu Piu
- scikit-learn机器学习 读书笔记(二)
- PTA L1-062 幸运彩票 C++实现
- html网页制作是什么,DynamicHTML是什么,能具体解释一下么本人初学网页制作, 爱问知识人...
- 2022第23届广州国际热处理、工业炉展览会
- java uuid jug实例(采用开源jug)
热门文章
- World Locking Tools for Unity (五)安装部分
- 使用vba操作工作表,实现报表汇总
- “将就的人生,其实沉没成本非常高”
- 李晋的YIM每日签名
- C语言内联汇编使用方法
- Bug随手记----关于java.lang.IllegalStateException: The following classes could not be excluded because the
- (数字ic验证)从零开始的apb_watchdog验证模块搭建(二、apb直接发送激励与寄存器模型加入)
- ICME2021:基于机器学习的VVC帧内编码码率控制
- 《《《翻译》》》Navigation Through Cluttered Environments
- Python之pandas学习【5】:导入导出数据