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