吃了经验的亏,因为Emoji表情引起的项目bug被撸主遇到两次了,总有一些调皮的小朋友爱用表情来搞点事。第一次把当时那个表改为utf8mb4解决了,第二次说啥都不好使。网上找了半天,发现好多人不去实验一下就复制别人的代码网上发,然后导致我拿来用直接不行。最后一遍遍尝试终于解决了,防止以后再出错,总结下吧。

我们的MYSQL数据库普遍用的字符集是UTF-8,默认情况下是utf8_general_ci,这种字符集下,默认是支持1-3字节的编码,当然这对字母,汉字都是没啥问题的。但是对手机带的Emoji表情级不行了,因为它是4个字节的。

这里介绍处理的一些办法吧,主要有两个:

   第一,修改数据库字符集:

这种方法需要的硬性要求就是你的mysql数据库版本5.5以后的。一般有数据库管理工具的,直接打开改了就是了,比如我用的HeidiSQL,直接把表改为utf8mb4就可以了。如图:在默认字符集那里调整就可以了。

这种方法简单省事,但是可能需要重启数据库。还有个问题是,有时候这方法不太灵,我第一次用这个方法,完美解决的问题,但是第二次,说啥都不好使。所以,这种方式还是不推荐了。

第二,将这些表情过滤掉

既然数据库不能保存,那就直接把这些表情过滤掉好了。这种情况是损坏客户的个性而让服务更便捷的一张方式。目前很多网站就是这么干的,毕竟效率是关键,你这表情即便保存了,也说不定哪里再次用到,展示不了。

过滤这种事,简直太多坑,比如,我尝试了很多次的这种代码:

撸主曾经十分坚信这就是最接近答案能解决表情问题的代码,即便不能,给他稍微改改就可以了。但是经过好多次,无论怎么搞,所有的字母和汉字全部都会给过滤成表情,最终还是没解决。哎,还是太年轻。

结果没办法,再去找别的代码,于是,碰到了正确的,也是目前最推荐的答案:

/**
* emoji表情替换
*
* @param source 原字符串
* @param slipStr emoji表情替换成的字符串
* @return 过滤后的字符串
*/
public static String filterEmoji(String source,String slipStr) {
if(StringUtils.isNotBlank(source)){
return source.replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]", slipStr);
}else{
return source;
}
}

建议做成工具方法,方便实用,亲测可行。

字符串中Emoji表情处理的更多相关文章

  1. mysql中emoji表情存储

    mysql中emoji表情存储 背景 在mysql 5.7.19,创建的数据库默认选择的编码是utf8 -- UTF-8 Unicode,因此字段默认的编码为utf-8,但在项目开发中存在一个需求:在 ...

  2. 3种方法轻松处理php开发中emoji表情的问题

    背景 做微信开发的时候就会发现,存储微信昵称必不可少. 可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了 一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面inse ...

  3. 判断字符串中是否包含Emoji表情代码

    判断字符串中是否包含Emoji表情代码: + (BOOL)stringContainsEmoji:(NSString *)string { __block BOOL returnValue = NO; ...

  4. 判断EditText输入的字符串中是否包含有emoji表情

    我们在实际的开发中经常需要用到EditText 但是有一个不好的地方就是我们在前端用EditText输入了带有emoji表情的字符串之后 服务器是无法识别的,这就需要我们前端根据需求来决定表情的去留, ...

  5. 项目中使用emoji表情包与表情的解析过程详情

    菜鸡一只,刚开始写博客文笔不好,有问题欢迎相互讨论.闲话不多说. 用到了三个插件 Emoji Picker 第一步 这个emoji表情包插件是我找到比较好 的一个,input框中是不能放入图片的,效果 ...

  6. PHP开发中涉及到emoji表情的几种处理方法

    最近几个月做微信开发比较多,存储微信昵称必不可少 可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了 一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一 ...

  7. [转]PHP开发中涉及到emoji表情的三种处理方法

    最近几个月做微信开发比较多,存储微信昵称必不可少,可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了 一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一 ...

  8. php开发中处理emoji表情和颜文字的兼容问题

    背景:随着手机的普及,现在移动开发很火爆,已经远远超过了pc端.在移动设备经常会发生用户发送的内容中包含emoji表情,在显示时就是乱码.一般是因为Mysql表设计时,都是用UTF8字符集的.把带有e ...

  9. 字符串进行富文本操作后末尾emoji表情显示会乱码

    问题描述: 1.UIlabel展示的text中包含emoji表情 2.emoji表情作为最后一个字符 在满足以上条件的前提下末尾的emoji会乱码. 寻找问题过程: 因为是在单独的机型上出现的问题,所 ...

随机推荐

  1. [原创]android开源项目源码解析(一)----CircleImageView的源码解析

    CircleImageView的代码很简洁,因此先将此工程作为源码解析系列的第一篇文章. 解析说明都在代码里了. /* * Copyright 2014 - 2015 Henning Dodenhof ...

  2. phalcon开发工具(phalcon-devtools)

    一.简介 Phalcon提供的这个开发工具主要是用来辅助开发,比如生成一些程序的基本框架,生成控制器模型等.使用这个工具我们只需要一个简单的命令即可生成应用的基本框架. 二.下载 github: ht ...

  3. C#下水晶报表打印自定义纸张

    在VB6中,如果要自定义纸张很方便:  Rpt.PaperSize = crPaperUser  Rpt.SetUserPaperSize lZZG, lZZK 但在C#中却不行了,没有发现 SetU ...

  4. [PaPaPa][需求说明书][V0.2]

    PaPaPa软件需求说明书V0.2 前   言 经过第一版本的需求说明书之后,我发现博客园不让我把文章发到首页,那么对于这种情况该怎么办呢?我决定立马发布V0.2版本来挑战一下博客园的审核制度,嘿嘿 ...

  5. U3D包大小优化之microlib

    当迩想把最小类库发上来,迩需要把Stripping Level设置为Use micro mscorlib 这里是MICROLIB所能使用的包的类库列表:http://docs.unity3d.com/ ...

  6. U3D4.X版本无法安装MONODEV编辑器

    可能是由于机器无法成功安装.NET 4.0的缘故

  7. SQL优化方案

    1:建立中间表,将步骤分解. 2:避免全字段查询,只查需要的字段 3:限定条件查询,避免先关联后写条件, --优化交货数据  --建临时表T_JHinfo  select A.VBELN,C.VBEL ...

  8. 在server 2008/2003中 取消对网站的安全检查/去除添加信任网站

    新安装好Windows   Server   2003操作系统后,打开浏览器来查询网上信息时,发现IE总是“不厌其烦”地提示我们,是否需要将当前访问的网站添加到自己信任的站点中去:要是不信任的话,就无 ...

  9. 实战:ASP.NET MVC中把Views下面的视图放到Views文件夹外

    园子里写的文章的都是把控制器从传统的项目中的Controllers拿出来单独放,但很少几乎没有把视图从Views拿出去这样的文章,今天来写一个. 其实很简单!一步步解决问题就行了,下面记录如下,供需要 ...

  10. selenium webdriver (python) 第一版PDF

    前言 如果你是一位有python语言基础的同学,又想通过python+ selenium去实施自动化,那么你非常幸运的找到了这份文档,我也非常荣幸能为你的自动化学习之路带来一丝帮助. 其实,我在sel ...