编码:unicode、utf-8以及emoji
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相关推荐
- 字符编码 unicode 及其在javascript 中的使用
一.javascript 使用 unicode16 字符集,可以使用中文变量名和函数名 计算机使用 8 位(bit)二进制表示一个字节(Byte),计算机内存最小寻址单位就是 1 字节. 早期为了在计 ...
- 编码 unicode 及其在 javascript 中的使用
编码 unicode 及其在 javascript 中的使用 一.javascript 使用 unicode16 字符集,可以使用中文变量名和函数名 计算机使用 8 位(bit)二进制表示一个字节(B ...
- 编码Unicode与解码
1.编码(Unicode) unicode(统一码.单一码)是计算机科学领域里的一项业界标准,包括字符集.编码方案等.Unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码,以 ...
- 各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解
GBK,ISO-8859-1,GB2312的本质区别 编码有几种 ,计算机最初是在美国等国家发明的 所以表示字符只有简单的几个字母只要对字母进行编码就好 我们标准码 iso-8859-1 这就是一个标 ...
- python中unicode编码表_Python中的字符串操作和编码Unicode详解
本文主要给大家介绍了关于 Python中的字符串操作和编码Unicode的一些知识,下面话不多说,需要的朋友们下面来一起学习吧. 字符串类型 str:Unicode字符串.采用''或者r''构造的字符 ...
- mac 文本编辑器 文本编码Unicode utf-8 不适用的问题
在mac上使用默认的文本编辑器打开下载的xx.txt文件,如果文本是gbk的编码可能会出现 文本编码Unicode utf-8 不适用的打开错误,如下图 解决方式: 文本编辑---偏好设置-----打 ...
- 引用 字库编码Unicode相关知识
引用 weifeng.shen 的 字库编码Unicode相关知识 1. 各地编码 首先说明一下现在常用的一些编码方案: 1. 在中国,大陆最常用的就是GBK18030编码, ...
- html转换编码格式,html编码转换 html编码设置utf gbk编码转换图文教程
html编码转换 html编码设置utf gbk编码转换图文教程篇 常用HTML编码之urf-8编码转换为gb2312编码或者gb2312转换为utf-8编码快速转换设置,这里DIVCSS5介绍使用D ...
- java emoji编码转换_编码:unicode、utf-8以及emoji
之前对emoji没怎么关注过,只有大约印象和编码有关,今天花了一点时间去看了一下emoji如何编码的. 先贴个知乎回答-Unicode 和 UTF-8 有什么区别? - 邱昊宇的回答 - 知乎 里面涉 ...
- 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 普通的linux 和 普通的windows. ...
最新文章
- 图论 ---- CF700 C. Break Up(Tarjan找桥+枚举+思维)
- java垃圾回收机制_乐字节Java|GC垃圾回收机制、package和import语句
- HDU3400(计算几何中的三分法利用)
- Could not resolve all dependencies for configuration ':app:_debugApk'
- 休眠面试问答-最终清单
- 关于 not enough actual parameters for macro ...
- XHTML + CSS使用技巧
- 天下无贼中经典的句子
- 博客系统php源码,tjheer博客系统php版 v1.10
- 机器人学导论原书第三版
- 如何彻底卸载3dmax2020_3DMAX 2020安装失败,怎么把3DMAX 2020彻底卸载删除干净重新安装?...
- 计算机上找不到运行程序怎么办,Win7出现窗口提示找不到应用程序怎么办?
- <C++>多继承以及典型的菱形继承案例
- mysql中explain是什么_MySQL中EXPLAIN的解释_MySQL
- 逆水寒服务器列表文件,逆水寒9月20日服务器合并结果公告一览 逆水寒9.20合服大全有哪些...
- checkedListBox获取选择的值
- 倾斜摄影顶点XYZ转世界坐标系再转BLH
- STM32模拟IIC驱动OLED屏 原理+源码
- 别人家的公司的 1024 程序员节
- 新人融入团队的必备python技巧,python 编码规范,滚雪球学Python第4季12篇
热门文章
- assert()和panic()
- 梁肇新《编程高手箴言》书评
- 90 矩阵——矩阵微分与求导
- 76----平面二次曲线的分类、消去二次交叉项、转轴变换、平面二次曲线的不变量、利用不变量确定平面二次曲线的类型和形状
- php手术多久就不疼了,自己腹部刚开刀口没几天,却站了5小时为患者手术
- 秒懂文件路径 ‘/‘ , ‘./‘ , ‘../‘ 的区别
- DevEco Studio 切换黑色界面(两步搞定)
- Linux上使用Cron启动定时任务
- 传统JDBC的弊病和mybatis的解决方案
- 和大家分享一下我最近的编程心得!!!