[英]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.