代码之家  ›  专栏  ›  技术社区  ›  Daniel Lucraft

如何将UTF-8字节偏移量转换为Java字符串的charOffset?

  •  3
  • Daniel Lucraft  · 技术社区  · 16 年前

    对于包含UTF-8编码字符串的字节数组,我有一个字节偏移量,如何将其转换为对应Java字符串的字符偏移量?

    这个问题过去是这样的:

    我将字节偏移量转换为标准Java字符串,并将其转换为字符偏移量。

    charOffsetBefore(int byteOffset)

    谢谢

    2 回复  |  直到 16 年前
        1
  •  3
  •   Aaron Digulla    16 年前

    请特别注意你的术语,否则你会感到困惑。没有“字节偏移量转换为Java字符串”这样的东西。Java字符串由16位字符组成。

    因此,我假设您有一个字节数组和一个偏移量,并且希望将其转换为Java字符串,并且仍然保留位置(以便可以来回映射)。

    这取决于字节数组的编码。如果是UTF-8,则设置了MSB的任何字节都是编码序列的一部分。搜索所需的字节 byte & 0xc0 == 0xc0 . 这是编码序列的开始(参见 Wikipedia article ).

    如果您询问的是字符,那么编码是UTF-16,您需要查找 surrogate pairs

        2
  •  1
  •   John Allen    16 年前

    我建议您不要将字节偏移量转换为标准Java字符串。如果你真的这么做了,你能告诉我们你是谁得到的吗