3

来自文档;

长度是 UnicodeString 中 UChar 代码单元的数量。如果您想要代码点的数量,请使用 countChar32()。

计算字符串长度 UChar 代码单元中的 Unicode 代码点。

一个代码点可以占用一个或两个 UChar 代码单元。计算代码点涉及读取所有代码单元。

由此我倾向于认为代码点是一个实际的字符,而代码单元只是字符的一个可能部分。

例如。

假设您有一个 unicode 字符串,例如:

'foobar'

长度和 countChar32 均为 6。然后假设您有一个由 6 个字符组成的字符串,该字符串采用完整的 32 位来编码长度为 12,但 countChar32 为 6。

它是否正确?

4

1 回答 1

4

仅当您使用基本多语言平面 (BMP) 之外的字符时,这两个值才会有所不同。这些字符在 UTF-16 中表示为代理对。两个 16 位字符组成一个逻辑字符。如果您使用其中任何一个,每一都算作一个32 位字符,但长度为两个元素。

于 2011-04-11T20:36:26.083 回答