2009-12-03 56 views
2

我有一個包含UTF-8編碼字符串的字節數組的字節偏移量,我如何將它轉換爲相應的Java字符串的char偏移量?如何將UTF-8 byteOffset轉換爲Java字符串的charOffset?

注:這個問題用來讀取:

我有一個字節偏移到一個標準的Java字符串,我想將其轉換爲字符偏移量。

實際上,這意味着像charOffsetBefore(int byteOffset)這樣的方法,因爲任何字節偏移都可能在代碼點的中間。

謝謝。

回答

3

請對您的術語非常警惕,否則您會感到困惑。 「沒有像」Java字符串中的字節偏移量「這樣的東西。 Java字符串由16位字符組成。

所以我假設你有一個字節數組和一個偏移量,並且你想把它轉換成一個Java字符串並且仍然保留位置(這樣你可以來回映射)。

這取決於字節數組的編碼。如果它是UTF-8,那麼任何有MSB設置的字節都是編碼序列的一部分。搜索byte & 0xc0 == 0xc0的字節。這是編碼序列的開始(請參閱Wikipedia article)。

如果您詢問字符,那麼編碼是UTF-16,您需要查找surrogate pairs

1

我建議你沒有一個字節偏移到一個標準的Java字符串。如果確實如此,可以告訴我們你是誰(代碼請見)

相關問題