首页 > 解决方案 > 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

标签: unicodeutf-8character-encodingutf-16utf

解决方案


UTF-8 使用 7 位对 Unicode 代码点 U+0000 - U+007F(ASCII 字符 0-127)进行编码。仅当编码 Unicode 代码点 U+0080 - U+10FFFF 时,才需要额外字节时,第八位才会发出信号。

例如,è是代码点 U+00E8,它以 UTF-8 编码为字节0xC3 0xA811000011 10101000二进制)。

Wikipedia很好地解释了 UTF-8 是如何编码的。

NUL Byte 是否表示二进制字符 0?

是的。


推荐阅读