有没有非utf8字符这样的东西



尝试实现 c++ 代码,我们可以使用非 utf8 字符作为 std::string 中的分隔符。

有没有非 UTF-8 字符这样的东西?

是的。 0xC0、0xC1、0xF5、0xF6、0xF7、0xF8、0xF9、0xFA、0xFB、0xFC、0xFD、0xFE 0xFF是无效的 UTF-8 代码单元。UTF-8 代码单元为 8 位。如果您所说的char是指 8 位字节,则无效的 UTF-8 代码单元将是未出现在 UTF-8 编码文本中的char值。

std::string只知道原始char值,它不知道使用char来保存编码值的特定字符编码。

许多常见的 UTF-8 实现使用char来保存编码的代码单元(尽管 C++20 将为此目的引入char8_tstd::u8string(。但其他字符编码(Windows-12##、ISO-8859-# 等(也可以将其编码值放入char元素中。

任何落在 ASCII 范围 (0x00 .. 0x7F( 内的char值都将适合 1char并映射到 Unicode 中的相同代码点值 (U+0000 ..U+007F(,但 ANSI 范围内但不在 ASCII 范围 (0x80 .. 0xFF( 中的任何char值都可以通过创建char值的任何字符编码进行解释。 有些编码每个字符使用 1 个char,有些使用多个char

所以是的,有"非 UTF-8 字符"这样的东西。

您可以在 Wiki 上查看 UTF-8 标准。并非每个字节序列都是有效的 UTF-8 字符。即使它是单字节:0x11111000,0x11111111也不是 UTF-8 格式的有效第一个字节。

不过,我怀疑使用非 UTF-8 字符作为分隔符是个好主意。您可能会发现某些程序(如记事本++(在读取字符串输出时出现问题。

相关内容

  • 没有找到相关文章

最新更新