簡體   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