Qt UTF-8编码问题 [英] Qt utf-8 encoding issue
本文介绍了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屋!
查看全文