深入理解字符编码(ASCII、Unicode、UTF-8、UTF-16、UTF-32)
Hollis
共 6354字,需浏览 13分钟
· 2020-12-06
大家都知道,程序中的所有信息都是以二进制的形式存储在计算机的底层的,也就是说我们在代码中定义的一个 char 字符或者一个 int 整数都会被转换成二进制码储存起来,这个过程可以被称为编码,而将计算机底层的二进制码转换成屏幕上有意义的字符(如“hello world”),这个过程就称为解码。
ASCII 编码
é
,又制定了 ASCII 额外扩展的版本 EASCII,这里就可以使用一个完整子节的 8 个 bit 位表示共 256 个字符,其中就又包括了一些衍生的拉丁字母。非 ASCII 编码
"一个汉字算两个英文字符!一个汉字算两个英文字符……"
é
,在希伯来语编码中却代表了字母 Gimel
(ג
),在俄语编码中又会代表另一个符号。但是所有这些编码方式中,0--127 表示的符号依然都是一样的,因为他们都兼容 ASCII 码,这一点,如今也是一样。Unicode
码点
Unicode 编码
定长与变长
大富大贵没有灾难要小心
大富大贵,没有灾难要小心
大富大贵没有,灾难要小心
UTF-32
00000000 00000000 00000000 01000001
UTF-8
0
,后面 7 位为这个符号的 Unicode 码。此时,对于英语字母UTF-8 编码和 ASCII 码是相同的。n
字节的符号(n > 1
),第一个字节的前 n
位都设为 1
,第 n + 1
位设为0
,后面字节的前两位一律设为 10
。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码,如下表所示:1
,则连续有多少个 1,就表示当前字符占用多少个字节,"丑" 有三个 1 表示占三个字符,然后取出有效位即可。UTF-16
何为代理?
什么是代理区?
从 UTF-16 转换为字符代码的算法是什么?
BMP 中直接对应,无须做任何转换; 增补平面 SP 中,则需要做相应的计算。其实由上图中的表也可看出,码点就是从上到下,从左到右排列过去的,所以只需做个简单的除法,拿到除数和余数即可确定行与列。 拿到一个码点,先减去 10000,再除以 400(=1024)就是所在行了,余数就是所在列了,再加上行与列所在的起始值,就得到了代理对了。
评论
架构应该如何来理解?
来源:zhuanlan.zhihu.com/p/141027477👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:htt
小哈学Java
0
你真的理解 devDependencies 和 dependencies 的区别吗?
点击上方 前端Q,关注公众号回复加群,加入前端Q技术交流群作者:井柏然原文:https://juejin.cn/post/7135795969370619918你是否真的理解 devDependencies 和 dependencies 的区别?如果不能确切的回答、理解还停留在模糊的阶段,
前端Q
0
免费AI编程助手,支持Visual Studio,让编码愉悦又轻松
前言前有Copilot各种酷炫操作,今有国产软件杀出重围。给大家介绍的是一款国内的国产编程神器,可与微软GitHub Copilot比比身手。关键它还是完全免费。它就是:非十团队国产自主研发的Fitten Code。此工具的速度是GitHub Copilot的两倍,同时它的精确度还有大约2
dotNET全栈开发
10
AI大模型之路 第三篇:从零实现词嵌入模型,加深理解!
你好,我是郭震今天我们研究「AI大模型第三篇」:词维度预测,很多读者听过词嵌入,这篇文章解答下面问题:词嵌入是什么意思?怎么做到的?原理是什么?从零实现一个专属你数据集的词嵌入我们完整从零走一遍,根基的东西要理解透,这样才能发明出更好的东西。1 skip-gram模型Skip-gram模型是一种广泛
Python与算法社区
11
从理解路由到实现一套Router(路由)
大厂技术 高级前端 Node进阶点击上方 程序员成长指北,关注公众号回复1,加入高级Node交流群平时在Vue项目中经常用到路由,但是也仅仅处于会用的层面,很多基础知识并不是真正的理解。于是就趁着十一”小长假“查阅了很多资料,总结下路由相关的知识
程序员成长指北
10
MySQL 巨坑:永远不要在 MySQL 中使用 UTF-8!!
来源:网络👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目
小哈学Java
10
深入理解Camera 三 (相机应用层)
和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、概览二、Camera Api v2三、Camera Framework四、Camera App Demo相机应用层一、概览相机应用处于整个框架的上层,在现实生活中,为了满足各式各样的应用场景,会加入很多业
程序员Android
10
深入理解Camera 二 (相机架构概览)
和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:相机架构概览Android系统利用分层思想,将各层的接口定义与实现分离开来,以接口作为各层的脉络连接整体框架,将具体实现的主导权交由各自有具体实现需求的平台厂商或者Android 开发者,这样既做到把控全局,
程序员Android
10