2019独角兽企业重金招聘Python工程师标准>>>

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

  • 字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)
  • 编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)

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

先去查找相关资料:

  • unicode中的emoji区位码
  • unicode编码为utf8规则

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

就这个笑脸为例子吧。

首先介绍一下这个笑脸:

这个笑脸占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

转载于:https://my.oschina.net/zwyang/blog/2990009

编码:unicode、utf-8以及emoji相关推荐

  1. 字符编码 unicode 及其在javascript 中的使用

    一.javascript 使用 unicode16 字符集,可以使用中文变量名和函数名 计算机使用 8 位(bit)二进制表示一个字节(Byte),计算机内存最小寻址单位就是 1 字节. 早期为了在计 ...

  2. 编码 unicode 及其在 javascript 中的使用

    编码 unicode 及其在 javascript 中的使用 一.javascript 使用 unicode16 字符集,可以使用中文变量名和函数名 计算机使用 8 位(bit)二进制表示一个字节(B ...

  3. 编码Unicode与解码

      1.编码(Unicode)     unicode(统一码.单一码)是计算机科学领域里的一项业界标准,包括字符集.编码方案等.Unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码,以 ...

  4. 各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解

    GBK,ISO-8859-1,GB2312的本质区别 编码有几种 ,计算机最初是在美国等国家发明的 所以表示字符只有简单的几个字母只要对字母进行编码就好 我们标准码 iso-8859-1 这就是一个标 ...

  5. python中unicode编码表_Python中的字符串操作和编码Unicode详解

    本文主要给大家介绍了关于 Python中的字符串操作和编码Unicode的一些知识,下面话不多说,需要的朋友们下面来一起学习吧. 字符串类型 str:Unicode字符串.采用''或者r''构造的字符 ...

  6. mac 文本编辑器 文本编码Unicode utf-8 不适用的问题

    在mac上使用默认的文本编辑器打开下载的xx.txt文件,如果文本是gbk的编码可能会出现 文本编码Unicode utf-8 不适用的打开错误,如下图 解决方式: 文本编辑---偏好设置-----打 ...

  7. 引用 字库编码Unicode相关知识

    引用 weifeng.shen 的 字库编码Unicode相关知识 1.      各地编码 首先说明一下现在常用的一些编码方案: 1.         在中国,大陆最常用的就是GBK18030编码, ...

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

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

  9. java emoji编码转换_编码:unicode、utf-8以及emoji

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

  10. 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   普通的linux 和 普通的windows.    ...

最新文章

  1. 图论 ---- CF700 C. Break Up(Tarjan找桥+枚举+思维)
  2. java垃圾回收机制_乐字节Java|GC垃圾回收机制、package和import语句
  3. HDU3400(计算几何中的三分法利用)
  4. Could not resolve all dependencies for configuration ':app:_debugApk'
  5. 休眠面试问答-最终清单
  6. 关于 not enough actual parameters for macro ...
  7. XHTML + CSS使用技巧
  8. 天下无贼中经典的句子
  9. 博客系统php源码,tjheer博客系统php版 v1.10
  10. 机器人学导论原书第三版
  11. 如何彻底卸载3dmax2020_3DMAX 2020安装失败,怎么把3DMAX 2020彻底卸载删除干净重新安装?...
  12. 计算机上找不到运行程序怎么办,Win7出现窗口提示找不到应用程序怎么办?
  13. <C++>多继承以及典型的菱形继承案例
  14. mysql中explain是什么_MySQL中EXPLAIN的解释_MySQL
  15. 逆水寒服务器列表文件,逆水寒9月20日服务器合并结果公告一览 逆水寒9.20合服大全有哪些...
  16. checkedListBox获取选择的值
  17. 倾斜摄影顶点XYZ转世界坐标系再转BLH
  18. STM32模拟IIC驱动OLED屏 原理+源码
  19. 别人家的公司的 1024 程序员节
  20. 新人融入团队的必备python技巧,python 编码规范,滚雪球学Python第4季12篇

热门文章

  1. assert()和panic()
  2. 梁肇新《编程高手箴言》书评
  3. 90 矩阵——矩阵微分与求导
  4. 76----平面二次曲线的分类、消去二次交叉项、转轴变换、平面二次曲线的不变量、利用不变量确定平面二次曲线的类型和形状
  5. php手术多久就不疼了,自己腹部刚开刀口没几天,却站了5小时为患者手术
  6. 秒懂文件路径 ‘/‘ , ‘./‘ , ‘../‘ 的区别
  7. DevEco Studio 切换黑色界面(两步搞定)
  8. Linux上使用Cron启动定时任务
  9. 传统JDBC的弊病和mybatis的解决方案
  10. 和大家分享一下我最近的编程心得!!!