2015-01-03 53 views
2

我使用.NET ProcessStartInfo.RedirectStandardOutputProcess.BeginOutputReadLine來捕獲另一個程序(特別是,youtube-dl.exe)的標準輸出並將它們保存到字符串變量中。捕獲另一個命令行程序的標準輸出,其中字符不在當前代碼頁

但是結果變量包含我的語言只有平常的字符,如中國和英文字母的傳統;帶有口音的韓文或拉丁字母等字符完全消失。

File.WriteAllText -ed結果變量和檢查文件使用serveral文本編輯器,所以我敢肯定他們丟失,而不是他們的存在,只是不能顯示,通過控制檯窗口。

說白了執行的YouTube-DL在Windows命令提示符顯示完整的信息,包括這些外國文字。

youtubeDL_process.OutputDataReceived很簡單:

(s, e) => { 
    if(!string.IsNullOrWhiteSpace(e.Data)) this._filename = e.Data; 
} 

如何使重定向的標準輸出字符串外文字符完整的,就像一個在命令提示符下直接產生的?

回答

0

您直接直接保存輸出到文件。試試這個

youtubeDL_process.OutputDataReceived += (s, e) => CaptureOutput(e.Data); 
youtubeDL_process.Start(); 
youtubeDL_process.BeginOutputReadLine(); 


private void CaptureOutput(string s) 
{ 
    Console.WriteLine("\r\n" + s); 
    //write fileChunks here using a StreamWriter.... 
} 

//因爲CaptureOutput正在接收您的數據串,嘗試其他類型的(.eg二進制),以免剝離出一個特殊字符(外文字符),也查了一些UTF8編碼或任何其他編碼方法文件。

相關問題