Qt中UTF-32字符的长度
Length of Utf-32 character in Qt
我正在使用 Qt5。我有一个 QString,其中包含一个长度超过 16 位的字符 U"\x1D4CC" ()。即使这只是一个字符,Qt returns 这个字符串的大小是 2。有没有办法显示一个 QString 有多少个真实字符假设可以有 32 个字符?
代码值大于 65535 的 Unicode 字符使用代理对存储,即两个连续的 QChars
。 QString::length
return 该字符串中 QChar
的个数,可能与字素(实际字符)的个数不同。
要计算字素数,您可以使用QTextBoundaryFinder class。
QString str = "";
QTextBoundaryFinder finder(QTextBoundaryFinder::Grapheme, str);
int count = 0;
while (finder.toNextBoundary() != -1)
++count;
qDebug() << count;
或者您可以将字符串转换为 UCS-4/UTF-32 表示并计算 32 位字符的数量。
QVector<uint> ucs4 = str.toUcs4();
qDebug() << ucs4.size();
我正在使用 Qt5。我有一个 QString,其中包含一个长度超过 16 位的字符 U"\x1D4CC" ()。即使这只是一个字符,Qt returns 这个字符串的大小是 2。有没有办法显示一个 QString 有多少个真实字符假设可以有 32 个字符?
代码值大于 65535 的 Unicode 字符使用代理对存储,即两个连续的 QChars
。 QString::length
return 该字符串中 QChar
的个数,可能与字素(实际字符)的个数不同。
要计算字素数,您可以使用QTextBoundaryFinder class。
QString str = "";
QTextBoundaryFinder finder(QTextBoundaryFinder::Grapheme, str);
int count = 0;
while (finder.toNextBoundary() != -1)
++count;
qDebug() << count;
或者您可以将字符串转换为 UCS-4/UTF-32 表示并计算 32 位字符的数量。
QVector<uint> ucs4 = str.toUcs4();
qDebug() << ucs4.size();