The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何解決在命令提示字元下使用 Git for Windows 顯示中文亂碼的問題

最近我的筆電重灌了 Windows 10 作業系統,卻在命令提示字元下執行 Git for Windows 時,發生無法顯示中文的情況,尤其是在執行 git log 的時候,當訊息中有中文字時,就無法正確顯示。本篇文章將說明如何解決這個問題。

問題描述

在 Windows 作業系統內部預設以 UTF-16 為預設字集編碼,如果要正常顯示在畫面上,通常會透過控制台中的地區設定進行自動轉換。而在 繁體中文(台灣) 的語言設定下,命令提示字元是以 CP950 也就是 Big5 為預設字集,所以任何要顯示在命令提示字元的文字,都會在內部先行轉譯過才能正常輸出,一般來說,要正常顯示中文都沒什麼大問題,不過要顯示 Big5 字集以外的 Unicode 文字,就必須要透過 chcp 命令來幫我們切換預設顯示字集。因此當你需要切換顯示字集的時候,可以試著輸入 chcp 65001 來切換成 Unicode 顯示模式。

不過 Git for Windows 內建的 git.exe 工具,畢竟是從 UNIX 環境下的工具轉換而來的,在 UNIX-like 作業系統環境下,預設在處理多國語系的時候,會讀取 LC_ALLLANG 這個環境變數,依據這個環境變數來判斷如何顯示與轉換文字,如果沒有設定的話,就有可能無法正確顯示非英語系語言的文字。

以我的電腦為例,在下達 git log 顯示版本紀錄時,就出現了以下狀況:

解決方案

要解決這個問題,只要設定好 LC_ALL 環境變數就可以解決。

畢竟 Git 在內部儲存 commit 紀錄的時候,預設都是以 UTF-8 為主要編碼,因此建議各位設定一個 LC_ALL 環境變數,將值設定為 C.UTF-8 即可解決此問題。

SET LC_ALL=C.UTF-8

如果你想要將 LC_ALL 環境變數設定在使用者環境變數中的話,只要透過 SETX 命令就可以快速設定完成,下次就不用再設定了:

SETX LC_ALL C.UTF-8

另外,當我們輸入 git status 的時候,如果檔名或路徑中有中文字,而且畫面顯示亂碼的話,也可以透過設定 core.quotepath 來解決亂碼問題。請用以下命令進行設定:

git config --global core.quotepath false

相關連結

留言評論