2015-08-28 56 views
0

我有一個應用程序必須用ASCII params啓動。它將它們視爲一個字節數組,因此它必須是ASCII而不是UTF-8等。這些值可能是非拉丁文的(因此它不是真正的ASCII,而是任何類似CP-1251的代碼頁)。
在bash,我可以啓動它作爲通過QProcess的8位參數

myapp --myparam $'abc...Z\xC0\xC1...\xFF' 

要複製到剪貼板,開關以純文本模式
我不能找到一種方法,用QProcess中做到這一點...
它似乎不直接使用bash和啓動進程,所以我不能使用$'\xnn'syntax
它也不接受QString以外的其他形式的參數。在將params傳遞給應用程序之前,無法要求它執行QString::toLocal8Bit()(所以我可以使用QTextCodec::setCodecForLocale()以其他代碼頁來欺騙UTF-8)。

任何想法?

更新:
1.我在下面得到了正確的答案。
2,我還發現QProcess將QFile :: encodeName()應用於每個參數,因此可能會繞過QTextCodec::setCodecForLocale()

回答

1

它似乎不使用bash和發射過程中直接

您可以使用QProcess調用bash和直接執行它: -

QString cmd = "bash -c \"myapp --myparam $'abc...Z\xC0\xC1...\xFF'\""; 
QProcess proc; 
proc.execute(cmd); 
+0

你碰巧知道如果我的應用程序的stderr通過proc.readAllStandardError()在這種情況下? – truf

+0

我期待如此,但嘗試一下並找出答案。 – TheDarkKnight