微信emoji表情编码的处理与储存
小编第一次碰到这个问题是在做微信开发认证的时候,微信认证获取用户昵称的时候,当获取到带emoji表情的时候,小编发现后台显示的是乱码或者是显示为NULL(前台展示为游客)
既然碰到,解决了,就简单给大家讲一下吧。
首先是从 emoji表情 的编码说起
无论是字符或者图片以及其他什么东东,都是以二进制比特流的存进计算机,那么如何这些二进制比特流以图片或者视频或者文字的形式展现给计算机使用者。记得黑客帝国里一个场景:当别人问为什么要看电脑监控的时候全部都是二进制时候,那逗比说:”电脑解码速度太慢,只能看二进制码流,不过,在我眼里,这些跟视频没什么两样“。一直觉得这货很屌炸天嘛。装X有格调。哈哈哈。不扯淡。进入正题
当二进制转换成用户所熟悉的图片,文字形式的时候,例如文字,需要的是一个编码标准,所以各种各样的字符集标准应孕而生,字符集规定了二进制和文字的转换关系。 说了那么多我们来看一个实际例子,下面就是屌这个字在各种编码下的十六进制和二进制编码结果,怎么样有没有一种很屌的感觉?
字体编码是有了,但是 随着互联网的发展,对同一字库集的要求越来越迫切,Unicode标准也就自然而然的出现。它几乎涵盖了各个国家语言可能出现的符号和文字,并将为他们编号。详见:Unicode on Wikipedia。Unicode的编号从0000开始一直到10FFFF共分为16个Plane,每个Plane中有65536个字符。而UTF-8则只实现了第一个Plane,可见UTF-8虽然是一个当今接受度最广的字符集编码,但是它并没有涵盖整个Unicode的字库,这也造成了它在某些场景下对于特殊字符的处理困难。emoji表情就是之一。
emoji表情
emoji表情采用的是 Unicode编码,Emoji就是一种在Unicode位于\u1F601-\u1F64F区段的字符。这个显然超过了目前常用的UTF-8字符集的编码范围\u0000-\uFFFF。所以这也就导致了小编开头出现的问题, 原因是什么呢 :一般数据库采用的数据库编码是utf-8。而且emoji支持的编码 utf8m4 在 mysql5.5 之后才支持,emoji表情所在的编码范围。utf-8编码根本不支持,所以也就导致了开头的乱码。
知道了原因,解决就相对比较简单了,只要把数据库的编码更改就可以了,添加emoji表情的支持。更改编码为 utf8mb4
| character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | | collation_connection | utf8mb4_general_ci | | collation_database | utf8mb4_general_ci | | collation_server | utf8mb4_general_ci |
另外一种方法就是在微信认证的时候,把微信名称中的emoji表情字符过滤掉。
微信emoji表情编码的处理与储存相关推荐
- 【拓展】谈谈字符编码:Unicode编码与emoji表情编码
" 开发过程中,字符编码是我们一定要掌握的知识.本文回顾ASCII标准,并介绍了Unicode和UTF-8.UTF-16方案间的关系,各自是如何存储的,最后介绍了Unicode中emoji表 ...
- java emoji 编码_Java对Emoji表情编码与解码
Java对Emoji表情编码与解码,使用到Java Emoji Converter . GitHub地址:https://github.com/binarywang/java-emoji-conver ...
- php微信Emoji表情处理
一.适用场景 通过代码实现微信Emoji表情处理. 二.相关代码 1.字节转Emoji表情 /*** 字节转Emoji表情* @author php_elephant* @param $cp 数据* ...
- php 微信表情存储,轻松处理PHP开发中微信emoji表情mysql存储的问题
背景 做微信开发的时候发现,微信支持emoji表情做昵称,结果考虑不周 Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串.有的 ...
- mysql存微信你曾_Mysql存储微信Emoji表情问题
问题 Tomcat 中报 Java 如下错误: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8D\x87 \xE7...' fo ...
- iOS Emoji表情编码/解码
之前做弹幕的时候 遇到的表情编码解码问题 表情编码一般是使用unicode编码 ,编码之后的格式 \ud83d\ude18\ud83d\ude18world\u4e16\u754chaha\ud83d ...
- 关于java过滤微信emoji表情的问题解决方法
由于网上某个版本存在bug,以下是将bug修复过的版本,仅供参考 public class EmojiFilter { /** * 检测是否有emoji字符 * @param so ...
- 微信Emoji表情代码大全
因PC端微信表情包不全,部分表情在PC中有显示问题,手机端微信不存在此问题,或者可以使用文字[微笑]这种方式添加微信表情 含义 标准 DoCoMo KDDI 软银 谷歌 微信 ✂复制这列
- mysql数据库保存微信emoji表情转义
/** 过滤表情* */public function parseEmojiTounicode($stremoji){$text = preg_replace_callback('/[\xf0-\xf ...
- unicode utf8 utf16转换说明及代码实现(包含emoji表情编码转换)
文字: Z 饕餮
最新文章
- Activity缓存方法。
- [.net 面向对象编程基础] (13) 面向对象三大特性——多态
- STL15-map/multimap容器
- iBATIS date MySQL_LocalDateTime与mysql日期类型的交互(基于mybatis)
- windows 覆盖linux,您是否曾考虑过用Linux替换Windows?
- 懒人的小技巧, 批处理修改IP
- 阿里云郑晓:浅谈GPU虚拟化技术(第二章)
- DEA用法(1)--三阶段DEA模型与DEAP使用方法教程
- JavaScript入门篇(红宝书第四版+犀牛书权威指南)一
- go导出mysql中的excel表_golang web 开发 从数据库 导出到excel案例
- 如何设计高扩展的在线网页制作平台
- uniapp微信小程序授权登录和获取微信绑定的手机号码
- macOS安装MySQL,使用Navicat连接MySQL数据库/2022
- 一个程序员的自白(认同迷失)
- [C] 数组指针、指针数组及数组传参
- 网络隔离变压器的选型
- 爱奇艺qsv视频下载后怎么转换为3gp格式
- 用python爬虫来登录深信服ac行为控制器,涉及到js加密部分,更新url分类库(针对企业微信更新)
- 量化交易 米筐 财务数据与定时器
- 2010计算机上机考试试题,WORD2010上机操作练习题