UTF-8 字符串中可以包含 NULL (0x0) 吗?

Yel*_*Ray 5 unicode utf-8

如果是这样,是否允许在字符串中的任何位置使用?

Rob*_*ier 9

是的,UTF-8 将 0x0 定义为NUL. 没有理由不能成为 UTF-8 流的一部分。RFC 3629 特别涵盖了这种情况:

从 U+0000 到 U+007F(US-ASCII 指令集)的字符编号对应于八位字节 00 到 7F(7 位 US-ASCII 值)。直接的结果是纯 ASCII 字符串也是有效的 UTF-8 字符串。

如您所知,有多种存储格式在编码方面存在问题NUL,因此修改后的 UTF-8 提供了替代编码,但“未修改”UTF-8 要求将其编码为 0x0(将其编码为 C0 80在第 10 节中明确指出为非法 UTF-8)。

  • 这个答案具有误导性。不可以,NUL 不能出现在 UTF-8 字符串中的任意位置,扩展字节不能是 NUL。它可能发生在流或缓冲区中,但不会发生在 ac 字符串中。C 字符串以 NUL 结尾,无论是否为 utf-8。 (10认同)
  • @ArashKazemi。没有人提到 C,所以我不明白为什么它是相关的。我不认为这个答案有任何误导性。 (4认同)