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

新手上路,请多包涵

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

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

原文由 user643605 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

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

原文由 Tom Blodget 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

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

所以是的,有“非 UTF-8 字符”之类的东西。

原文由 Remy Lebeau 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题