从文档;
长度是UnicodeString中UChar代码单元的数量。如果需要代码点数,请使用countChar32()。
和
以字符串的UChar码单元的长度计数Unicode码点。
一个代码点可以占用一个或两个UChar代码单元。计算代码点涉及读取所有代码单元。
因此,我倾向于认为代码点是实际字符,而代码单元只是字符的一个可能部分。
例如。
假设您有一个unicode字符串,例如:
'foobar'
length和countChar32都将为6。然后说,您有一个由6个字符组成的字符串,需要使用完整的32位进行编码,长度将为12,而countChar32将为6。
它是否正确?
最佳答案
仅当您使用基本多语言平面(BMP)之外的字符时,两个值才会不同。这些字符在UTF-16中表示为代理对。两个16位字符组成一个逻辑字符。如果您使用其中任何一个,则每对算作一个32位字符,但长度为2个元素。