QT5 qDebug()<

挨踢-linux 2015-09-28 02:35:16
网上大多资料是QT4的,
QTextCodec的一些方法已经用不了了,我自己也探索了一下,也找不到方法,望高手解决下,就不要吐槽了。
我试过把main.cpp改成各种编码(GBK,UTF-16,GBK1802 ,ANSI),都输出不了中文

main.cpp:采用UTF-8编码

//以下是我的测试代码
QString s = "你好"; //被自动转化为Unicode,输出unicode编码
QByteArray b = "你好"; //UTF-8,输出UTF-8编码
QByteArray bArr ; //这个数组是你好的ANSI编码
bArr.resize(4);
bArr[0] = 0xC4;
bArr[1] = 0xE3;
bArr[2] = 0xBA;
bArr[3] = 0xC3;

qDebug()<<s;
qDebug()<<b;
qDebug()<<bArr;
qDebug()<<"你好"; //????未知,为什么只有这个打印出中文而不是编码?
//这句采用的到底是什么编码导致可以输出汉文?


程序输出结果:

...全文
8697 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
逆风孤歌 2019-07-30
  • 打赏
  • 举报
回复

QString Config::unicodeToCn(QString Str)
{
    QString filename = Str;
    do {
        int idx = filename.indexOf("\\u");
        QString strHex = filename.mid(idx, 6);
        strHex = strHex.replace("\\u", QString());
        int nHex = strHex.toInt(0, 16);
        filename.replace(idx, 6, QChar(nHex));
    } while (filename.indexOf("\\u") != -1);
    return filename;
}
试试这个吧,传进去\uxxxx 返回的QString 就是中文了
肥鱼翻身 2017-04-25
  • 打赏
  • 举报
回复
QString str = "你好"; qDebug()<<str.toUtf8().data();
zzj233 2016-06-01
  • 打赏
  • 举报
回复
非控制台程序时,在应用程序输出中,以上方法都不对!!!(qt5.5.1+win7)
小海2015 2015-10-24
  • 打赏
  • 举报
回复
同上 qDebug() << qstr.toUtf8().data();//其实就是转化成UTF8编码 char* 如果是linux: toLocal8Bit()估计也可以试试 类似的方法还有很多 ps:qDebug<<"你好";//和上面应该是同一原理
morg 2015-10-21
  • 打赏
  • 举报
回复
解决方案:qDebug() << QString("QT5中文").toStdString().c_str() ;
Memory4ever 2015-10-13
  • 打赏
  • 举报
回复
QString::fromLocal8Bit()
txvvvzfv 2015-10-10
  • 打赏
  • 举报
回复
楼主的问题解决了吗? 现在我也头痛这个问题啊
Pokeeeer 2015-09-30
  • 打赏
  • 举报
回复
我记得QT5的默认配置就是支持中文显示的啊。。。 Qt4 会有中文乱码,Qt5不会 设置好字符集之后,进行UTF8编码,Qt会自己解码成中文的
挨踢-linux 2015-09-30
  • 打赏
  • 举报
回复
引用 5 楼 iegad的回复:
QString::fromStdWString(L"草特么的QT5中文!"); 记得改一下配置! 工具->文本编辑器->行为->UTF-8 BOM : 改为 "如果编码是UTF-8则添加" 本人环境: win7 64, QT5.5 VS2013!!
不行哦,我是win8 64,编译器mingw493_32,QtCreaor
iegad 2015-09-29
  • 打赏
  • 举报
回复
多说一句, 如果是C++11的, LZ可以看看 "std::wstring_convert" 虽然没试过, 但是应该也可以!
iegad 2015-09-29
  • 打赏
  • 举报
回复
QString::fromStdWString(L"草特么的QT5中文!"); 记得改一下配置! 工具->文本编辑器->行为->UTF-8 BOM : 改为 "如果编码是UTF-8则添加" 本人环境: win7 64, QT5.5 VS2013!!
未狂 2015-09-29
  • 打赏
  • 举报
回复
qDebug()<<QStringLiteral("中文"); 记得把对应的CPP重新保存成UTF-8编码的
挨踢-linux 2015-09-28
  • 打赏
  • 举报
回复
引用 1 楼 dustpg 的回复:
c++11 u8字符前缀?
QString s = u8"中文"; //这样子吗?不行的,会报错
挨踢-linux 2015-09-28
  • 打赏
  • 举报
回复
引用 2 楼 zbw1185 的回复:
你用QT5的话,只要设置了UTF-8编码,就会正常显示中文的,你的代码我运行了,可以正常显示。建议你新建项目试试,先将套件里面的默认编码设置为UTF-8.
下面是我的工程代码,希望大家帮忙看看 http://download.csdn.net/detail/u011073510/9145263
画茧自缚 2015-09-28
  • 打赏
  • 举报
回复

你用QT5的话,只要设置了UTF-8编码,就会正常显示中文的,你的代码我运行了,可以正常显示。建议你新建项目试试,先将套件里面的默认编码设置为UTF-8.
dustpg 2015-09-28
  • 打赏
  • 举报
回复
c++11 u8字符前缀?

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧