2013-07-26 67 views
0

我試圖建立一套幫助函數來解碼和修改多字節utf-8字符串。例如,查找字符串中的字符數量,並查找特定字符的字節偏移量。如何解碼多字節utf8字符串? (C++)

我一直在尋找解決方案一段時間,但一直未能弄清楚。 如果任何人都可以給我看一個跨平臺和便攜式的方式來做到這一點,只有使用STL 我真的很感激。此外,如果有一個C++ 11的方式來做到這一點,我也打開。

+0

http://site.icu-project.org/ –

+3

Stack Overflow用於回答關於您實際面對的代碼的問題的具體問題,而不是爲您執行代碼 –

+0

請參閱utf8everywhere.org說明 –

回答

2

你應該閱讀和UTF-8研究的維基百科頁面,編碼是清楚的描述thereL https://en.wikipedia.org/wiki/UTF-8

爲了解碼UTF-8,讀取第一個字節,而應該告訴你很多後續字節是如何形成的字符。然後閱讀許多其他字節,連接「數據」位,並且您將獲得編碼點編號。

如果你這樣做,直到你到達字符串的末尾,這允許你計算字符串中有多少個代碼點。

如果你這樣做直到你達到某個代碼點索引,你就會知道該代碼點索引的字節偏移量。

我不認爲真的有任何STL功能可以幫助您,除了您的基本std::string::const_iterator

至於非標準庫,我高度推薦使用unicode庫,如ICU,或者不要自己編寫代碼。如果你非常小心的話.Net庫有點類似工作,但我不認爲Windows有任何其他API可以幫助解決這個問題。