如何從UTF-8編碼字符串中刪除重音符號?有數百個答案要麼使用某些庫函數,要麼使用轉換表。UTF-8編碼字符串的字符串長度
我正在尋找實際的算法(背後的想法和它爲什麼工作),而不是一個準備好使用的實現。
我的目標是計算一個UTF-8編碼的字符串單個字符(這樣,例如,utf8_strlen("Vypočítávání") = 12
。我想算長度的任何字符串,包括中國或者克林貢語。
我已經知道怎麼算多字節字符:如果當前字節的最高位爲1
,那麼我就知道一些更多的字節將出席放眼未來幾個字節,我可以告訴大家的是:
110xxxxx
意味着多了一個字節將會跟着,1110xxxx
另外兩個,11110xxx
三。
(我們可以假設,該字符串正確編碼,即序列是一個有效的UTF-8流。這意味着,這些字節實際上將遵循)
我讀一個字節我知道有多少人會指定一個Unicode代碼點,因此我可以跳過這些(再次,流有效)並相應地增加中間和。
我該如何做相同的字符組合?也就是說,有一個簡單的方法來告訴代碼點是否例如(如HACEK在č
在ç
或在中國任何奇怪的曲線或加符)口音? 如果有,那麼我也期待跳過它們。
非常感謝!
是的,有一種簡單的方法可以做到這一點。不幸的是,這種直接的方式不是一種算法,而是在作爲Unicode標準一部分的大型數據表中查找表格。他們爲每個代碼點指定各種屬性,包括您之後的代碼。 – jalf
目前還不清楚你在問什麼。標題與問題的內容不匹配。這個問題似乎意味着口音是通過結合字符呈現的,在大多數情況下,它們不是。處理字節在這裏真的不相關。它在概念上和編程上處於完全不同的水平。你還沒有定義一個字符串的長度。 –