我在qt下調用system():system("md5sum 证书.txt > 证书.txt.md5"); 目的是生成 证书.txt 的md5文件? 但是生成之後的md5文件卻是 “??书.txt.md5” 這樣的 求解???
------解决方案--------------------
试下system(QString("md5sum 证书.txt > 证书.txt.md5").toLocal8Bit().constData());
或者用QProcess类:
QProcess cmd;
cmd.setNativeArguments("md5sum 证书.txt > 证书.txt.md5");
cmd.start("cmd.exe");
cmd.waitForFinished();
------解决方案--------------------
明显是编码问题。
#include <QTextCodec>
QTextCodec *codec = QTextCodec::codecForName("System");
//获取系统编码
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
------解决方案--------------------
设置utf-8
------解决方案--------------------
1、在Qt中,这3行代码的用法,在99.9%以上情况下都是不正确的。
2、即使楼主的问题真的是编码问题,也和这3行代码没有任何关系。因为system()不是Qt中的函数。调整Qt内部的编码对其没有任何影响。
------解决方案--------------------
我觉得楼主可以先试试在命令行里面不用中文,把文件名改成英文文件名,如果那样没有问题的话,估计是源文件的编码问题,可以在源文件上点击右键,选择“保存时添加UTF-8BOM”试试。
------解决方案--------------------
不要用QString/QByteArray中转,直接将 "...." 字符串作为system的参数。
如果不正常,则不是Qt的问题。
------解决方案--------------------
估计是lz你的系统使用字库问题,看你的打的字都一堆繁体
------解决方案--------------------
要不你试试用宏包起来,我也是刚解决的。
QString str = QStringLiteral("md5sum \"你的时间\" > \"你的时间.md5\"");
------解决方案--------------------
还是编码的问题吧,跟具体的字没关系,字符串里面有双数中文字就可以,单数中文字就不行,我之前碰到过
------解决方案--------------------
我用Qt4.8.4在Windows下用下面这段代码没有出现乱码:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QString strCmd = "echo 证书用>证书用.txt";
system(strCmd.toStdString().c_str());