unicode - UTF-8 编码标准中的第一位(即二进制 0)是什么意思?
问题描述
我是一名专业的PHP 开发人员。
考虑下面的例子:
我想使用UTF-8编码对单词“hello”进行编码。
所以,
单词“hello”的每个字母的等效码点如下:
h = 104
e = 101
l = 108
o = 111
因此,我们可以说十进制数字列表代表字符串"hello":
104 101 108 108 111
UTF-8编码将像这样(二进制)存储“hello” :
01101000 01100101 01101100 01101100 01101111
如果你仔细观察上面的二进制编码值,你会知道十进制数的每个二进制等价物前面都有二进制位值0
。
我的问题是为什么这个首字母0
会在每个可存储的字符前加上前缀?在 UTF-8 编码中使用它的目的是什么?
当使用UTF-16格式对相同的字符串进行编码时,做了什么?
如果有必要,那么最初的额外字符可以是一个位值1
吗?
NUL Byte是否表示二进制字符0
?
解决方案
UTF-8 使用 7 位对 Unicode 代码点 U+0000 - U+007F(ASCII 字符 0-127)进行编码。仅当编码 Unicode 代码点 U+0080 - U+10FFFF 时,才需要额外字节时,第八位才会发出信号。
例如,è
是代码点 U+00E8,它以 UTF-8 编码为字节0xC3 0xA8
(11000011 10101000
二进制)。
Wikipedia很好地解释了 UTF-8 是如何编码的。
NUL Byte 是否表示二进制字符 0?
是的。
推荐阅读
- c# - 如何在 EF Core 的 SaveChanges 方法中更改实体状态?
- vb.net - 如何解决 Visual Studio 中的数据集和数据库连接问题?
- node.js - Angular 登录表单 cookie 在 Mozilla Firefox 中不起作用?
- reactjs - 在不重新加载的情况下更改查询参数 = NextJS 路由器
- asp.net-core - Linq - 包含 DateTime 字段的动态查询
- c# - Roslyn 没有检测到 asp.net 应用程序中的引用
- javascript - 内联 IF 语句根据烧瓶变量更改图标类
- corda - 我的节点正在开发模式下运行,所以如何更改它
- python-3.x - 使用 tkinter python 基于另一个组合框填充一个组合框
- html - 仅在 Github 创建的公共链接上显示存储库名称