【问题标题】:Length of Utf-32 character in QtQt 中 Utf-32 字符的长度
【发布时间】:2016-04-14 12:22:32
【问题描述】:

我正在使用 Qt5。我有一个 QString 包含一个字符 U"\x1D4CC" (????),它长于 16 位。即使这只是一个字符,Qt 也会返回这个字符串的大小为 2。有没有办法显示一个 QString 有多少个真实字符,假设可以有 32 个字符?

【问题讨论】:

    标签: qt unicode qstring


    【解决方案1】:

    代码值高于 65535 的 Unicode 字符使用代理对存储,即两个连续的QCharsQString::length 返回此字符串中QChar 的个数,可能与字形(实际字符)个数不同。

    要计算字素个数,可以使用QTextBoundaryFinder类。

    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();
    

    【讨论】:

    • Qt6 有更新吗?
    猜你喜欢
    • 2018-03-15
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多