Php 它是什么意思';最高位';或';最高位';一个字节?

Php 它是什么意思';最高位';或';最高位';一个字节?,php,unicode,utf-8,character-encoding,utf-16,Php,Unicode,Utf 8,Character Encoding,Utf 16,我的职业是PHP开发人员 考虑以下有关UTF-8编码标准的文本: UTF-8是可变长度编码。如果一个角色可以 使用单字节表示,UTF-8将使用单字节对其进行编码 字节。如果它需要两个字节,它将使用两个字节,以此类推。信息技术 详细介绍了如何使用字节中的最高位来表示 一个字符由许多字节组成。这可以节省空间,但也可能 如果需要经常使用这些信号位,则会浪费空间 也可以考虑下面的 UTF-8和 UTF-16编码示例: あ UTF-8编码的字节字符串为11100011 1000001 100000

我的职业是PHP开发人员

考虑以下有关UTF-8编码标准的文本:

UTF-8是可变长度编码。如果一个角色可以 使用单字节表示,UTF-8将使用单字节对其进行编码 字节。如果它需要两个字节,它将使用两个字节,以此类推。信息技术 详细介绍了如何使用字节中的最高位来表示 一个字符由许多字节组成。这可以节省空间,但也可能 如果需要经常使用这些信号位,则会浪费空间

也可以考虑下面的<强> UTF-8<强>和<强> UTF-16<强>编码示例:

あ UTF-8编码的字节字符串为11100011 1000001 10000010

あ UTF-16编码字节字符串为00110000 01000010

有人请解释一下在UTF-8编码标准和PHP的上下文中,字节中最高位(或最高位)的含义

另外,请向我解释如何使用字节中的这些最高位(或最高位)来表示一个字符由多少字节组成

字节中最高位(或最高位)的这种现象如何节省空间,但如果需要经常使用这些信号位,也可能浪费空间


请根据我在问题中提供的编码示例给出您的答案和解释

这个答案只回答了你的(小)问题,但我真的建议你阅读以了解更广泛的情况。 它已经有15年的历史了,但基本原理没有改变,它很好地解释了背景、技术细节和背后的历史。这当然有助于解释在使用unicode进行web开发时在实践中会遇到的某些问题,并有助于设置良好的测试用例,这样当法国人或日本人开始使用时,您的软件不会突然崩溃。毕竟,如果您开始使用unicode,您必须从数据库到字符集头一直正确地使用它

也就是说

高位

最高位是代表值的最高部分的位,通常写在左侧。就像你写1857824一样,1是最高的数字(代表一百万)。对于二进制,它是相同的,除了那些数字总是只有0或1

信号位

在unicode中,它不使用所有位作为字符的值(允许一个字节中有256个不同的字符),而是使用较少的位,并使用一些位来表示下一个字节包含关于同一字符的更多信息。这些信号位位于“高”侧(前部)

在2或3个字节中匹配字符

如果您只有英文文本,每个字符仍将适合UTF-8中的单个字节,信号位将指示没有第二个字符。如果你时不时地将其与带变音符号的拉丁字符混合在一起,一些字符将是2字节,但许多字符仍然是1字节,因此它仍然比UTF-16更节省空间,UTF-16的字节数总是2的倍数

这意味着UTF-16需要更少的标志(16中的1位,而不是8中的1位)来指示是否会有更多的组。因此,UTF-16为字符数据移动了更多空间。这为您的“Japanese a”带来了有趣的效果,它在UTF-16中也可以容纳2个字节,而在UTF-8中,您需要3个字节,因为使用了太多的信号位,并且没有空间将日语与所有其他字符集一起容纳在2个字节中


<>这意味着,如果你真的担心空间,你可以考虑在UTF-16中存储和发送主要的日语文本,同时在UTF-8中存储和发送主要的拉丁语文本(包括英语)。事实上,我不会太担心这一点,选择一个并坚持下去会为你省去很多麻烦。

这个答案只回答了你的(小)问题,但我真的建议你阅读以了解更广泛的情况。 它已经有15年的历史了,但基本原理没有改变,它很好地解释了背景、技术细节和背后的历史。这当然有助于解释在使用unicode进行web开发时在实践中会遇到的某些问题,并有助于设置良好的测试用例,这样当法国人或日本人开始使用时,您的软件不会突然崩溃。毕竟,如果您开始使用unicode,您必须从数据库到字符集头一直正确地使用它

也就是说

高位

最高位是代表值的最高部分的位,通常写在左侧。就像你写1857824一样,1是最高的数字(代表一百万)。对于二进制,它是相同的,除了那些数字总是只有0或1

信号位

在unicode中,它不使用所有位作为字符的值(允许一个字节中有256个不同的字符),而是使用较少的位,并使用一些位来表示下一个字节包含关于同一字符的更多信息。这些信号位位于“高”侧(前部)

在2或3个字节中匹配字符

如果您只有英文文本,每个字符仍将适合UTF-8中的单个字节,信号位将指示没有第二个字符。如果你时不时地将其与带变音符号的拉丁字符混合在一起,一些字符将是2字节,但许多字符仍然是1字节,因此它仍然比UTF-16更节省空间,UTF-16的字节数总是2的倍数

这意味着UTF-16需要更少的标志(16位中的1位,而不是8位中的1位)来