Qt中讀取Qprocess的輸出中文顯示亂碼問題

2021-10-23 22:30:53 字數 571 閱讀 9192

在qt程式中使用qprocess執行子程式然後呼叫其readallstandardoutput()方法得到子程式的標準輸出,但是該標準輸出在轉換為qstring後,發現中文部分出現了亂碼。

針對該問題,我最後發現是process的輸出編碼與qt的預設編碼不同導致的,子程式使用vs編寫,vs的程式輸出預設是作業系統本地編碼的輸出,在中文系統中,這種輸出預設是gb2312編碼。

而qt為了跨平台和統一字元編碼,qstring的編碼格式預設為unicode編碼,問題就出在這兒。

因此,在得到qprocess輸出後,還應該多一步,將其轉換為unicode編碼,然後在存到qstring中。

具體**為:

qbytearray qba = process.readallstandardoutput();

qtextcodec* ptextcodec = qtextcodec::codecforname("system");

assert(ptextcodec != nullptr);

qstring str = ptextcodec->tounicode(qba);

qt中的QProcess的使用總結

參考部落格 1 2 一 這邊注意區分兩個啟動的時候start和startdetached 1 start 的時候你的主程式結束的時候,呼叫的外部程式也會結束 2 startdetached 的時候你的主程式雖然被關閉,但是呼叫的外部程式並不會結束,也就是開啟之後兩者的關聯性會消失 二 判斷當前程式是...

Qt中QProcess 開啟外部程序

qt中qprocess開啟外部程式,比較常用的一種方式就是直接呼叫start 函式,另一種是直接呼叫startdetached 函式,但是第二種方式啟動的外部程序,在啟動之後就和啟動外部程序的程式分離了,這樣就無法後續進行更多的控制,比如無法訪問啟動的外部程序的狀態,和無法在程式內部關閉外部程式,只...

QT中呼叫外部程式 QProcess的使用

本文 http blog.csdn.net waderchan archive 2009 05 19 4199913.aspx 執行介面如下 程式共包含以下有乙個檔案 view plain copy to clipboard print?main.cpp include process.h incl...