Qt UTF-8编码问题 [英] Qt utf-8 encoding issue

查看:34
本文介绍了Qt UTF-8编码问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

    #include <iostream>

    #include <QString>

    using namespace std;
    
    int main()
    {
    
        QString qstr = QString::fromUtf8("  𝐺𝐷𝑃 𝑡   𝐺𝐷𝑃𝑡");
        cout << qstr.length() << std::endl;
        for (QChar c : qstr) cout << QString(c).toStdString() << endl;
    }

获取输出:

19

预期输出:

11

𝐺

𝐷

𝑃

𝑡

𝐺

𝐷

𝑃

𝑡

Qt版本:

软件包:QT5-默认架构:AMD64版本: 5.5.1+dfsg-16ubuntu7.7多拱门:相同优先级:可选部分:语义库/库来源:qtbase-opensource-src来源:Ubuntu

如何修复此问题?

推荐答案

QString存储16位QChar字符串 https://doc.qt.io/qt-5/qstring.html

𝐺𝐷𝑃𝑡𝐺𝐷𝑃𝑡&qot; 字符串有4个字节字符。 可以使用以下代码:

QString str = QString::fromUtf8("  𝐺𝐷𝑃 𝑡   𝐺𝐷𝑃𝑡");
cout << "uint 32b: " << str.toUcs4().size() << endl;


foreach (const uint &  ucsChar, str.toUcs4())
    cout << QChar::decomposition(ucsChar).toStdString() << endl;

这篇关于Qt UTF-8编码问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆