QT QProcess::readAllStandardOutput()中文乱码解决方法

QT QProcess::readAllStandardOutput()中文乱码解决方法

(2014-04-16 17:25:43)
QT5已经移除setCodecForTr等转编码的函数,所以需要用QString::fromStdString和QString::fromLocal8Bit等转换成QString


以下是示例代码


//包含的头文件都被新浪微博自动删除了,自己包含相应的头文件吧
#include 
#include 
#include 
#include 
#include 
#include 
 
 
using namespace std;
 
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QProcess pro;
    pro.start("demo.exe");
    pro.waitForFinished();
 
 
    string str1 = "111中文";
    //QString str = QString(QObject::tr(pro.readAllStandardOutput()));   //中文显示乱码
    //QString str = QString::fromStdString(pro.readAllStandardOutput()); //中文显示乱码
    QByteArray qba = pro.readAllStandardOutput();
    char* myChar = new char[qba.length()];
    for(int i=0; i i++)
    {
        myChar[i] = qba[i];
    }
    string str2 = string(myChar);
    delete []myChar;
    qDebug()<<QString::fromStdString(str1)         //中文显示正常
            <<QString::fromStdString(str1.c_str())  //中文显示正常
            <<QString::fromStdString(str2)         //中文显示乱码
            <<QString::fromLocal8Bit(str2.c_str())  //中文显示正常
            <<QString::fromLocal8Bit(qba);         //中文显示正常
 
 
    return a.exec();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值