我正在使用 Qt5。我有一个 QString 包含一个长度超过 16 位的字符 U"\x1D4CC"(𝓌)。即使这只是一个字符,Qt 也会返回这个字符串的大小为 2。有没有办法显示 QString 有多少个实际字符,假设可以有 32 个字符?
最佳答案
代码值大于 65535 的 Unicode 字符使用代理对存储,即两个连续的 QChars
. QString::length
返回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();
关于qt - Qt中Utf-32字符的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36622981/