我有一个必须使用ASCII参数启动的应用程序。它将它们视为一个字节数组,因此它必须是ASCII而不是UTF-8等。值可能是非拉丁语(因此它不是真正的ASCII,而是任何代码页,如CP-1251)。
在bash中,我可以将其作为
myapp --myparam $'abc...Z\xC0\xC1...\xFF'
要复制到剪贴板,请将视图切换到纯文本模式
我无法用QProcess找到一种方法...
它似乎没有直接使用bash和启动过程,因此我无法使用$'\xnn'
syntax
它也不接受QString以外的形式的params。在将params传递给应用程序之前,没有办法要求它执行QString::toLocal8Bit()
(因此我可以使用QTextCodec::setCodecForLocale()
欺骗UTF-8与其他代码页)。
有什么想法吗?
更新:
我在下面得到了正确的答案
2,我还发现QProcess将QFile :: encodeName()应用于每个arg,因此可以使用QTextCodec::setCodecForLocale()
绕过问题。
答案 0 :(得分:1)
似乎没有直接使用bash和启动进程
您可以从QProcess调用bash并直接执行: -
QString cmd = "bash -c \"myapp --myparam $'abc...Z\xC0\xC1...\xFF'\"";
QProcess proc;
proc.execute(cmd);