有没有非utf8字符之类的东西
Is there such a thing as non-utf8 character
尝试实现 c++ 代码,我们可以在其中使用非 utf8 字符作为 std::string 中的分隔符。
是否有非 UTF-8 字符这样的东西?
std::string
只知道原始 char
值,它对使用 char
保存编码值的特定字符编码一无所知。
许多常见的 UTF-8 实现使用 char
来保存编码的代码单元(尽管 C++20 将为此引入 char8_t
和 std::u8string
)。但是其他字符编码(Windows-12##、ISO-8859-# 等)也可以将它们的编码值放入 char
元素中。
任何落在 ASCII 范围 (0x00 .. 0x7F) 内的 char
值都将适合 1 char
并映射到 Unicode 中的相同代码点值 (U+0000 .. U+ 007F),但 ANSI 范围内但不在 ASCII 范围内 (0x80 .. 0xFF) 的任何 char
值都受创建 char
值的任何字符编码的解释。有些编码每个字符使用 1 char
,有些使用多个 char
。
所以是的,有这样的东西 "non-UTF-8 char"。
您可以查看UTF-8 standard on Wiki。并非每个字节序列都是有效的 UTF-8 字符。即使它是单个字节:0x11111000、0x11111111 也不是 UTF-8 中的有效第一个字节。
不过,我怀疑使用非 UTF-8 字符作为分隔符是否是个好主意。您可能会发现某些程序(如 Notepad++)在读取字符串输出时出现问题。
是的。 0xC0、0xC1、0xF5、0xF6、0xF7、0xF8、0xF9、0xFA、0xFB、0xFC、0xFD、0xFE、0xFF 为invalid UTF-8 code units。 UTF-8 编码单元是 8 位。如果 char
是指 8 位字节,则无效的 UTF-8 代码单元将是未出现在 UTF-8 编码文本中的 char
值。
尝试实现 c++ 代码,我们可以在其中使用非 utf8 字符作为 std::string 中的分隔符。
是否有非 UTF-8 字符这样的东西?
std::string
只知道原始 char
值,它对使用 char
保存编码值的特定字符编码一无所知。
许多常见的 UTF-8 实现使用 char
来保存编码的代码单元(尽管 C++20 将为此引入 char8_t
和 std::u8string
)。但是其他字符编码(Windows-12##、ISO-8859-# 等)也可以将它们的编码值放入 char
元素中。
任何落在 ASCII 范围 (0x00 .. 0x7F) 内的 char
值都将适合 1 char
并映射到 Unicode 中的相同代码点值 (U+0000 .. U+ 007F),但 ANSI 范围内但不在 ASCII 范围内 (0x80 .. 0xFF) 的任何 char
值都受创建 char
值的任何字符编码的解释。有些编码每个字符使用 1 char
,有些使用多个 char
。
所以是的,有这样的东西 "non-UTF-8 char"。
您可以查看UTF-8 standard on Wiki。并非每个字节序列都是有效的 UTF-8 字符。即使它是单个字节:0x11111000、0x11111111 也不是 UTF-8 中的有效第一个字节。
不过,我怀疑使用非 UTF-8 字符作为分隔符是否是个好主意。您可能会发现某些程序(如 Notepad++)在读取字符串输出时出现问题。
是的。 0xC0、0xC1、0xF5、0xF6、0xF7、0xF8、0xF9、0xFA、0xFB、0xFC、0xFD、0xFE、0xFF 为invalid UTF-8 code units。 UTF-8 编码单元是 8 位。如果 char
是指 8 位字节,则无效的 UTF-8 代码单元将是未出现在 UTF-8 编码文本中的 char
值。