[C#] CliWrap 遇到中文亂碼問題
2025-07-14
在一些應用裡,我們常常需要呼叫外部指令,例如執行自己寫的 console程式,或是跑報表等其他命令列工具。
過去的做法通常是使用 System.Diagnostics.Process,雖然可行,但要處理輸入輸出、等待結束、取消執行、讀取結果等細節時,程式碼會變得又長又複雜。
後來我發現有個套件叫 CliWrap,能讓這些操作變得簡潔許多,也更容易維護
今天主要不是介紹 CliWrap ,主要是因為我在 Windows 使用的時候,常常會出現亂碼
才發現就是 Big5 根 UTF8 轉碼的問題,後來根GPT 來回周旋,最後終於有一個比較正確的版本
基本上他的主要流程就是
cmd.exe (BIG5 bytes)
↓
PipeTarget.ToStream(ms)
↓
MemoryStream 收原始位元流
↓
Encoding.GetEncoding(950).GetString(...)
↓
UTF-8 Console 輸出
不然之前在 windows 下面怎麼測試都是出現亂碼,這邊紀錄一下,給需要的人
