Qt5 QProcess的使用和readAllStandardOutput()中文乱码的解决
来源:互联网 发布:淘宝卖家差评链接 编辑:程序博客网 时间:2024/05/22 00:25
#include <QCoreApplication>#include <QProcess>#include <QDebug>#include <string>#include <iostream>using namespace std;//本cpp文件请使用utf-8格式编码(注:不是以utf-8无bom格式编码),参考工具notepad++void test001(){ QProcess pro; pro.start("ping");//测试linux 和window pro.waitForFinished(); string str1 = "111中文"; QByteArray all = pro.readAll(); if(all.isEmpty()) { all=pro.readAllStandardOutput(); if(all.isEmpty()) { all=pro.readAllStandardError(); } } char* myChar = new char[all.length()]; for(int i=0; i<all.length();i++) { myChar[i] = all[i]; } string str2 = string(myChar); cout<<str2<<endl;//qt5 可以输出中文 cout<<"=============="<<endl; cout<<string(all.data())<<endl;//qt5 可以输出中文 cout<<"=============="<<endl; cout<<str1<<endl; delete []myChar; QString qstr1=QString::fromStdString(str1); qDebug()<<qstr1<<endl; //中文乱码 qstr1=QString::fromLocal8Bit(str1.c_str()); qDebug()<<qstr1<<endl; //中文显示正常,但是这里显示的是unicode编码 qstr1=QString::fromStdString(str2); qDebug()<<qstr1<<endl; //中文乱码 qstr1=QString::fromLocal8Bit(str2.c_str()); qDebug()<<qstr1<<endl; //中文显示正常,但是这里显示的是unicode编码 qstr1=QString::fromLocal8Bit(all); qDebug()<<qstr1<<endl; //中文显示正常,但是这里显示的是unicode编码}void test002(){ QProcess process; process.start("ping"); process.waitForFinished(); QByteArray all=process.readAll(); if(all.isEmpty()) { all=process.readAllStandardOutput(); if(all.isEmpty()) { all=process.readAllStandardError(); } } cout<<string(all.data())<<endl; QString result=QString(all); qDebug()<<"result="<<result<<endl; result=QString::fromLocal8Bit(all.data()); qDebug()<<"result2="<<result<<endl;}void test003(){ QString apkpath="d:/mlgx.apk"; QString cmd="jarsigner -verify -verbose -certs "+apkpath; qDebug()<<"jarsigner "<<cmd<<endl; QProcess process; process.start(cmd); process.waitForFinished(); QByteArray all=process.readAll(); if(all.isEmpty()) { all=process.readAllStandardOutput(); if(all.isEmpty()) { all=process.readAllStandardError(); } } cout<<string(all.data())<<endl; // QString result=QString(all); // qDebug()<<"result="<<result<<endl; QString result=QString::fromLocal8Bit(all.data()); qDebug()<<"result2="<<result<<endl;}//Qt5 QProcess的使用和readAllStandardOutput()中文乱码的解决int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); test001(); test002(); test003(); QString line("你好"); QString data=QStringLiteral(" 到底乱码还是unicode输出"); qDebug()<<"test中文"<<line<<data<<endl; cout<<"test中文"<<QString(line.toUtf8()).toLocal8Bit().data()<<data.toLocal8Bit().data()<<endl; cout<<"test中文"<<line.toStdString()<<data.toLocal8Bit().data()<<endl; return a.exec();}
0 0
- Qt5 QProcess的使用和readAllStandardOutput()中文乱码的解决
- QT QProcess::readAllStandardOutput()中文乱码解决方法
- 解决Qt5和VS2015中文乱码的问题
- Qt5的中文乱码问题如何解决
- 解决qt5中文乱码的问题
- Qt5解决中文乱码问题的方法
- Qt中文|qt5解决读取中文文件中文的乱码
- qt5解决读取中文文件中文的乱码
- qt5 中文乱码解决
- 解决QT5中中文乱码的方法 (已验证)
- 【Qt】]两种解决Qt5显示中文乱码的方法
- 【Qt开发】解决Qt5.7.0中文显示乱码的问题
- 【Qt】]两种解决Qt5显示中文乱码的方法
- Qt5 中文乱码的问题
- 解决QProcess对象调用execute执行cmd命令不支持中文和空格的问题
- 在vs2015中使用qt5出现中文乱码的问题
- Qt5.2和VS2013中文乱码的问题
- QProcess的使用
- php封装一个简单的MVC框架
- Ubuntu16.04 常用软件集锦[超实惠]
- 对矩阵分解的粗浅理解之LU分解
- linux的信号捕捉函数详解
- 封装框架(一)为什么要封装一个自己的框架
- Qt5 QProcess的使用和readAllStandardOutput()中文乱码的解决
- 欢迎使用CSDN-markdown编辑器
- 如何用kali Linux进行DNS欺骗、窃取cookies,使用SSLstrip
- Python由词频统计改编的数据分组汇总
- 2016年第四届湘潭大学新生趣味程序设计竞赛 题解
- HTML学习笔记:HTML基本标签属性、常用标记
- 全面支持 Angular2 的 Web 后台 Bootstrap 模板 Sing App – Web & Angular 2.0 Dashboard
- Html5笔记之第五天
- 《PHP设计模式》之 适配器模式