gpt4 book ai didi

string - 将 utf-8 编码的字符串从字节转换为字符时,计算机如何知道字符在哪里结束?

转载 作者:行者123 更新时间:2023-12-04 10:19:07 25 4
gpt4 key购买 nike

给定一个以 UTF-8 编码的 Unicode 字符串,它只是内存中的字节。

如果计算机想要将这些字节转换为其相应的 Unicode 代码点(数字),它如何知道一个字符在哪里结束而另一个字符从哪里开始?一些字符由 1 个字节表示,其他字符最多由 6 个字节表示。所以如果你有

00111101 10111001

这可以表示 2 个字符,或 1 个。计算机如何决定正确解释它?是否有某种约定可以让我们从第一个字节中知道当前字符使用了多少字节之类的?

最佳答案

多字节序列的第一个字节以前导 1 位的数量对序列的长度进行编码:

  • 0xxxxxxx本身就是一个角色;
  • 10xxxxxx是多字节字符的延续;
  • 110xxxxx是 2 字节字符的第一个字节;
  • 1110xxxx是 3 字节字符的第一个字节;
  • 11110xxx是 4 字节字符的第一个字节。

  • 超过 4 个前导 1 位的字节不会在 UTF-8 中编码有效字符,因为 4 字节序列已经涵盖了从 U+0000 到 U+10FFFF 的整个 Unicode 范围。

    因此,问题中提出的示例有一个 ASCII 字符和一个不单独对字符进行编码的连续字节。

    关于string - 将 utf-8 编码的字符串从字节转换为字符时,计算机如何知道字符在哪里结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15688569/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com