在ICU UnicodeString中,countChar32()和length()之间的区别是什么?



从文档;

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

计算字符串长度中的Unicode码位

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

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

例如

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

"foobar"

长度和countChar32都是6。然后假设你有一个由6个字符组成的字符串,需要完整的32位来编码,长度将是12,但countChar32将是6。

正确吗?

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

最新更新