問題很簡單。git diff HEAD HEAD~ > diff.txt 將修改差異轉存 diff.txt,在 Cmd DOS 視窗執行沒什麼問題:

在 PowerShell 環境執行同樣指令,寫入檔案的中文變亂碼:

網路爬文繞了一大圈,驀然回首,答案躺在自家部落格深處 - 【茶包射手日記】PowerShell 串接 EXE 輸出中文變亂碼

標準的 PowerShell 串接 EXE 輸出編碼問題,加上 [Console]::OutputEncoding = [Text.Encoding]::UTF8 即可解決。(問題解析請見舊文,此略)

感覺忘記自己查過、解過、做過,會成為我「寫程式寫到八十」路上的絆腳石,鳴~~~

【同場加映】

很多人都說程式設計師馬上要被 ChatGPT 幹掉,不免俗拿這個問題問問神奇海螺。ChatGPT 洋洋灑灑列了一堆做法,但沒包含最關鍵的 [Console]::OutputEncoding。

潮水退去,茶包老射手褲子還在(雖已滑到低腰),保住一絲尊嚴。


Comments

# by Anonymous

cmd.exe 叫命令提示字元 不是 DOS 視窗

# by Jeffrey

to Anonymous,嘿,叫它小叮噹叫習慣了 https://blog.darkthread.net/blog/ms-dos-prompt/

Post a comment