繁体   English   中英

在不知道UTF-8编码的情况下,在空白字符上拆分UTF-8编码的字符串

[英]Split a UTF-8 encoded string on blank characters without knowing about UTF-8 encoding

我想在每个空白字符('','\\ n','\\ r','\\ t','\\ v','\\ f')分割一个字符串。字符串以UTF8编码存储在一个字节中array(例如char *,或vector或string)

我可以在每个分裂字符处拆分字节数组吗? 换句话说,我确定在多字节字符中找不到与这些字符对应的字节值? 通过查看UTF-8规范,似乎所有多字节字符只有大于128的字节。

谢谢

是的你可以。

多字节序列必须包括一个前导字节(两个MSB等于11 )和一个或多个连续字节(两个MSB等于10 )。 多字节序列(前导字节+连续字节)的总长度等于前导字节中等于1的MSB的计数,在第一个位0出现之前(例如:如果前导字节是110xxxxx ,恰好是一个连续字节应该遵循;如果是11110xxx ,应该有正好三个连续字节)。

因此,如果你发现短MB序列或没有前导字节的stray continuationb字节,你的字符串无论如何都可能是无效的,你拆分程序可能不会比它可能已经进行的任何更进一步。

但是您可能需要注意一些事项:Unicode在上部非ASCII兼容范围中引入了其他“空白”符号。 您可能希望相应地对待它们。

如果你将自己限制在你提到的空白字符集中,那么答案肯定是“是”。

当然,总是存在一个问题,即首先检查您的文本是否是有效的UTF-8 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM