在空白字符上拆分 UTF-8 编码字符串,而无需了解 UTF-8 编码
Split a UTF-8 encoded string on blank characters without knowing about UTF-8 encoding
我想在每个空白字符(' ', '', '\r', '\t', '\
v', '\f'(字符串以 UTF8 编码存储在字节数组中(例如 char*、向量或字符串(
我可以在每个拆分字符处拆分字节数组吗?否则,我确定在多字节字符中找不到与这些字符对应的字节值吗?通过查看 UTF-8 规范,似乎所有多字节字符都只有大于 128 的字节。
谢谢
是的,你可以。
多字节序列必须包括一个前导字节(两个MSB等于11
(和一个或多个继续字节(两个MSB等于10
(。 在第一个位 0 出现之前,多字节序列的总长度(前导字节+延续字节(等于前导字节中等于 1 的 MSB 计数(例如:如果前导字节110xxxxx
,则后面应该正好有一个延续字节;如果是11110xxx
,则应该正好有三个延续字节(。
因此,如果您发现没有前导字节的短 MB 序列或杂散的延续 b 字节,那么您的字符串无论如何都可能无效,并且您拆分过程可能不会比它可能已经存在的内容更进一步。
但是您可能需要注意一些事情:Unicode 在非 ASCII 兼容范围的上限中引入了其他"空白"符号。 您可能希望相应地对待它们。
如果你把自己限制在你提到的一组空格字符上,答案肯定是"是"。
当然,首先检查您的文本是否有效的 UTF-8 总是存在一个问题......
相关文章:
- 如何在CPP的给定目录中列出UTF编码的文件名?
- 如何使用 C++将 ISO-2022-KR 编码转换为 UTF-8 编码?
- 如何使用utf-8编码在Qt5 WebEngineView中加载HTML页面?
- 如何在 c++ 中读取用 utf-8 编码的 java unicode 字节字符串
- QT 无法识别 UTF-8 编码,适用于其他所有位置
- 有关读取 UTF-8 编码文本时 Ifstream get() 方法行为的说明 (C++)
- 如何在Qt中通过QTcpSocket发送UTF-8编码的字符串
- 从键盘读取 UTF-8 编码的字符
- 如何从文件中写入的UTF-8编码的URDU字符串中获取单个字符
- C++ 字符串 UTF-8 编码
- 如何在 C# 中使用 Swig 包装 UTF-8 编码C++ std::strings
- 需要说明如何使用 C++ 在 Linux 上创建 utf-8 编码文件
- 如何将 UTF-8 编码的 std::string 转换为 UTF-16 std::string
- std::string 和 UTF-8 编码的 unicode
- 如何验证UTF-8编码的std::字符串
- 在空白字符上拆分 UTF-8 编码字符串,而无需了解 UTF-8 编码
- 使用ICU(ICU4C)读取UTF-8编码文件的缓冲区大小
- 如何使用Visual C++将UTF-8编码的数据存储到sqlite3中
- 如何检查文本文件是否使用UTF-8编码
- 为什么字符变得无用?libcurl c++ Utf-8编码的html;