之前对emoji没怎么关注过,只有大约印象和编码有关,今天花了一点时间去看了一下emoji如何编码的。 先贴个知乎回答-Unicode 和 UTF-8 有什么区别? - 邱昊宇的回答 - 知乎 里面涉及两个概念:

字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)

编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)

unicode码是是一种字符集(类似的还有gbk),而utf-8是一种编码规则(类似的还有utf-16等)

先去查找相关资料:

现在就够知识进行实验了: 先去拷贝一个表情放到浏览器上来试试:?(其实我们都被计算机视为一种字节流,包括这些文字也都是)

就这个笑脸为例子吧。

首先介绍一下这个笑脸:

这个笑脸占4个字节,用十六进制表示可表示为:0xf0,0x9f,0x98,0x80。

不信你可以使用世界上最好的语言来打包试试:$str = pack('cccc',0xf0,0x9f,0x98,0x80);,打印这个$str,然后在浏览器中打开就可以看到上面这个笑脸了。

那么我们再来查一下这个笑脸在unicode中的码是什么呢?

查到了!就是:1F600,一眼能看得出它也是一个十六进制的数。

这个和刚才上面那个0x f0 9f 98 80差的也太远了吧!

不要着急,区位码(1F600)和 utf-8字节流之间还没开始转换呢,根据百度来的编码规则(这个百度来的和谷歌来的都是一样的,是真的!)

先把十六进制都转成二进制,再看就比较容易:

1F600转为二进制:0001 1111 0110 0000 0000

0x f0 9f 98 80转为二进制: 1111 0000 1001 1111 1001 1000 1000 0000

然后我们看下转换规则,

文献规则中说到:“Unicode转换为UTF-8时,可以将Unicode二进制从低位往高位取出二进制数字,每次取6位,……不足8位用0填补。”,根据这个规则就是可以进行编码了:

1111 0 000

10 01 1111

10 01 1000

10 00 0000 //

这里转换完毕正好就得到 1111 0000 1001 1111 1001 1000 1000 0000。

java emoji编码转换_编码:unicode、utf-8以及emoji相关推荐

  1. html转换编码格式,html编码转换 html编码设置utf gbk编码转换图文教程

    html编码转换 html编码设置utf gbk编码转换图文教程篇 常用HTML编码之urf-8编码转换为gb2312编码或者gb2312转换为utf-8编码快速转换设置,这里DIVCSS5介绍使用D ...

  2. 日常小结:emoji表情转换utf-8编码字符串(存入数据库)/还原表情字符(页面展示)

    直接贴上工具类 package com.epean.trade.framework.util;import java.net.URLDecoder; import java.net.URLEncode ...

  3. java 代码名称转换_计算机编码基础知识及Java中编码转换

    1.ASCII 码 学过计算机的人都知道 ASCII 码,ASCII 码是美国标准信息交换代码(American Standard Code for Information Interchange)的 ...

  4. java 编码解码_深入解析Java中的编码转换以及编码和解码操作

    一.Java编码转换过程 我们总是用一个java类文件和用户进行最直接的交互(输入.输出),这些交互内容包含的文字可能会包含中文.无论这些java类是与数据库交互,还是与前端页面交互,他们的生命周期总 ...

  5. java万能编码转换_分享万能java字符串编码转换工具类

    package com.zuidaima.util; import java.io.UnsupportedEncodingException; /** * 转换字符串的编码 */ public cla ...

  6. java对字符串编码转换_处理字符串编码转换java类详解

    该字符串处理类包括将ISO-8859-1编码的字符串转换成GBK编码 .对输入的字符串进行一次编码转换,防止SQL注入和验证URL地址是否存在的方法. 字符串处理类(编码转化.SQL注入.URL) i ...

  7. 字符编码转换_进制转换(GB2312,GBK,JNI,HexTOStr)

    [cpp] view plain copy print? // /* ASCII 英文一个字节 gb2312,gbk 中文两个字节,英文一个字节 在中文系统中ansi一般指gb2312或gbk GB2 ...

  8. java万能编码转换_java编码转换的详细过程

    常见的JAVA程序包括以下类别: *直接在console上运行的类(包括可视化界面的类) *JSP代码类(注:JSP是Servlets类的变型) *Servelets类 *EJB类 *其它不可以直接运 ...

  9. mysql 查询编码转换_字符集介绍及mysql数据库编码转换

    一.字符集介绍: 1.ASCII ASCII是英文American Standard Code for Information Interchange的缩写,美国标准信息交换代码是由美国国家标准学会( ...

最新文章

  1. 汇编语言随笔(13)- 外中断(可屏蔽中断)、实验15
  2. 看透 Spring MVC 源代码分析与实践 —— 俯视 Spring MVC
  3. linux最初配置( vimrc设置 、tab键设置 inputrc、中文输入法等等)
  4. horizon client 无法识别域_「领域驱动设计DDD」事件风暴简介:实现域驱动设计的简便方法...
  5. php var export 数组,PHP关于数组缓存JSON、serialize、var_export的说明
  6. 高温保护_耐高温保护膜可以用在哪一方面?
  7. git push 出现 you are not allowed to upload merges 错误提示
  8. 【名额有限】腾讯技术工程-运维技术沙龙
  9. 线性代数及其应用 知识整理
  10. 在VUE中实现城市及对应的地区的联动渲染
  11. 高等数学(第七版)同济大学 习题8-1 个人解答
  12. 网络操作系统和分布式操作系统的区别
  13. 支付宝扫码枪收银的实现原理你了解吗?
  14. 计算机与现代社会英语作文,高一英语作文,科技以下是题目:众所周知,科技在现代社会和生活中扮演着越来越重要的角色,但科技同时也是一把双刃剑,在它璀璨...
  15. Legion 一款网络渗透工具
  16. Spyder学习笔记1-Jack Xu
  17. 基本尺寸,实际尺寸,作用尺寸,极限尺寸,最大实体尺寸,最小实体尺寸
  18. 我辛辛苦苦做了一个月的项目,组长年底用来写了晋升PPT
  19. 小可爱怎么备份word自动图文集呢?
  20. JAVA基于微信小程序的校园信息共享平台毕业设计-附源码211615

热门文章

  1. 微信公众平台消息接口开发(34)微信墙之表白墙/婚礼墙/晚会墙/会议墙/晒单墙/照片墙/历史墙...
  2. 用递归方法实现读取文件夹下所有文件信息
  3. 【报告分享】迈向更好的教育:未来教育的技术空间研究报告.pdf(附下载链接)
  4. 【回顾】千万级智能推荐系统的架构演进
  5. 全球首发!惯性导航导论(剑桥大学)第十一部分
  6. Java在程序设计题目中的妙用
  7. 【TI-ONE系列教程(一)】如何使用TI-ONE平台
  8. 大咖齐聚!好好聊聊啥是AI大模型
  9. 从零开始学pythonjava_从零开始学习python:demo2.4
  10. python函数表格_python 6.7 编写printTable()函数表格打印(完整代码)