这段时间在做移动端的开发, 有一个功能就是发表评论,其实这个功能本身是比较简单的, 但是在提测是的时候QA给哦提了一个bug,说输入手机自带的emoji表情发送失败了.我就奇怪了,emoji表情也是文本内容,怎么就发送失败呢,我通过Chrome调试之后发现,向后台发送的时候就显示失败了,也就是后台没有存进去,之后我就去找后台联调, 查阅资料之后发现,emoji所占的字节数为4个字节,就是js的编码导致的问题,后台数据库一般设置的是UTF-8存储形式,存储不进去.

那么怎么解决呢, 有好多办法来解决,前端后台都可以解决

1. 后台更改数据库格式

  执行sql语句将数据库的编码格式改成utf8mb4 存储形式,这种4字节的UTF-8存储形式可以完美的兼容以前的3字节的存储形式,并且可以直接存储emoji表情,这是最完美的解决方案.

2. 使用base-64编码

  列如可以使用base-encode来编码emoji表情之后存储在UTF-8之中,取出的时候decode一下就可以了,但是我没有试过

3. 干掉emoji表情

  暴力干掉,估计PM不会同意这么做

4. 前端处理

  就是通过第三方插件, 将输入的emoji转为span标签,并赋上相应的class,找一大堆emoji,表情图片,向后台发送的时候就是发送span表情,这个后台当让就可以存储了, 这样做的好处就在所有的设备上展示的都是一样的,不会产生歧义,当然缺点就是emoji表情在更新,有可能你所找到的emoji表情图片库不全,有的表情无法展示到页面上,这个就需要定期维护

推荐一个比较好用的插件库 https://github.com/node-modules/emoji

使用方法 先下载emoji插件

<link href="http://cdn.staticfile.org/emoji/0.2.2/emoji.css" rel="stylesheet" type="text/css" />
<script src="http://cdn.staticfile.org/emoji/0.2.2/emoji.js"></script>

映入这两个代码库,这个插件完全不需要依赖jquery库

接下来就更加简单了

var text = document.querySelector('emojiText');
cosnoel.log(jEmoji. unifiedToHTML(text.value))

如果使用了commenJS规范

$ npm install emoji

var emoji = require('emoji');
console.log('

前端如何处理emoji表情的更多相关文章

  1. PHP如何处理emoji表情存入utf8的数据库

    一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串.这是怎么回事呢? 原来是因为Mysql的utf8字符集是3字节的,而em ...

  2. 移动前端手机输入法自带emoji表情字符处理

    今天,测试给我提了一个BUG,说移动端输入emoji表情无法提交.很早以前就有思考过,手机输入法里自带的emoji表情,应该是某些特殊字符.既然是字符,那应该都能提交才对,可是为啥会被卡住呢?搜了一下 ...

  3. 【转】移动前端手机输入法自带emoji表情字符处理

    http://blog.csdn.net/binjly/article/details/47321043 今天,测试给我提了一个BUG,说移动端输入emoji表情无法提交.很早以前就有思考过,手机输入 ...

  4. 手机自带输入法emoji表情的输入,提交及显示——纯前端解决方案

    很早之前就遇到过需要前端支持用户输入并提交emoji表情的问题,一直没有尝试去解决,今天再一次狭路相逢,该来的躲不过,那就着手解决吧. 大多数emoji表情都是4字节的utf-16编码(辅助平面字符, ...

  5. 知识点---前端处理支持emoji表情

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 手机自带输入法emoji表情的输入,提交及显示——前端解决方案

    体验更优排版请移步原文:http://blog.kwin.wang/programming/emoji-transform-commit.html 之前就遇到过需要前端支持用户输入并提交emoji表情 ...

  7. PHP开发丨3个简单的方法处理emoji表情

    一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串.这是怎么回事呢?原来是因为Mysql的utf8字符集是3字节的,而emo ...

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

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

  9. 一个emoji引发的一条血案:mysql存储emoji表情字符时报错解决

    以下是我插入一条带表情的数据到mysql后出现错误 2019-03-04 14:24:40,462 ERROR 2807 [-/139.199.27.244/-/2ms POST /api/activ ...

随机推荐

  1. Python中map()函数浅析

    MapReduce的设计灵感来自于函数式编程,这里不打算提MapReduce,就拿python中的map()函数来学习一下. 文档中的介绍在这里: map(function, iterable, .. ...

  2. webpack 的使用2

    实际项目中的配置 要加__dirname 不然会报错 注意path  /dist 前不要加点 结果 将两个文件打包在一起 结果 传入对象 并且单独打包 name为key 加上本次打包的hash has ...

  3. eNSP关闭保存文件的提示信息

    总是提示如下信息: Oct 12 2017 23:49:24-08:00 Huawei DS/4/DATASYNC_CFGCHANGE:OID 1.3.6.1.4.1.2011.5.25.191.3. ...

  4. JAVA提高四:反射基本应用

    在前面一节<http://www.cnblogs.com/pony1223/p/7659210.html>,我们学习了JAVA的反射的相关知识,那么本节我们对前面所学习的知识做一个应用相关 ...

  5. DevOps之主机

    唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. 主机(Host) 关于主机,知识与技能的层次(知道.理解.运用),理论与实践的方面(原理.技术 ...

  6. 使用Gradle构建Android项目

    阅读目录 Gradle是什么? 环境需求 Gradle基本结构 任务task的执行 基本的构建定制 目录配置 签名配置 代码混淆设置 依赖配置 输出不同配置的应用 生成多个渠道包(以Umeng为例) ...

  7. win10 uwp 修改Pivot Header 颜色

    我们在xaml创建一个Pivot <Pivot Grid.Row="1"> <PivotItem Header="lindexi">&l ...

  8. C#控件基础

    在说控件之前,还是有必要说一下如何创建项目的. 现在我们就不用创建控制台应用程序了,而是文件>新建>C#>Windows窗体应用程序.名称,位置自己选择. 创建好了大致就是这样了,可 ...

  9. ELK简介

    什么是ELK ELK是ElasticSearch,LogStash以及Kibana三个产品的首字母缩写.是可以和商业产品 Splunk 相媲美开源项目. 2013 年,Logstash 被 Elast ...

  10. Node Sass could not find a binding for your current environment 解决办法

    具体错误如下: 解决办法: 命令行执行  npm rebuild node-sass  命令(如果不行,则先运行npm install node-sass命令执行再执行 npm rebuild nod ...