我有一個包含UTF-8編碼字符串的字節數組的字節偏移量,我如何將它轉換爲相應的Java字符串的char偏移量?如何將UTF-8 byteOffset轉換爲Java字符串的charOffset?
注:這個問題用來讀取:
我有一個字節偏移到一個標準的Java字符串,我想將其轉換爲字符偏移量。
實際上,這意味着像charOffsetBefore(int byteOffset)
這樣的方法,因爲任何字節偏移都可能在代碼點的中間。
謝謝。
我有一個包含UTF-8編碼字符串的字節數組的字節偏移量,我如何將它轉換爲相應的Java字符串的char偏移量?如何將UTF-8 byteOffset轉換爲Java字符串的charOffset?
注:這個問題用來讀取:
我有一個字節偏移到一個標準的Java字符串,我想將其轉換爲字符偏移量。
實際上,這意味着像charOffsetBefore(int byteOffset)
這樣的方法,因爲任何字節偏移都可能在代碼點的中間。
謝謝。
請對您的術語非常警惕,否則您會感到困惑。 「沒有像」Java字符串中的字節偏移量「這樣的東西。 Java字符串由16位字符組成。
所以我假設你有一個字節數組和一個偏移量,並且你想把它轉換成一個Java字符串並且仍然保留位置(這樣你可以來回映射)。
這取決於字節數組的編碼。如果它是UTF-8,那麼任何有MSB設置的字節都是編碼序列的一部分。搜索byte & 0xc0 == 0xc0
的字節。這是編碼序列的開始(請參閱Wikipedia article)。
如果您詢問字符,那麼編碼是UTF-16,您需要查找surrogate pairs。
我建議你沒有一個字節偏移到一個標準的Java字符串。如果確實如此,可以告訴我們你是誰(代碼請見)