﻿# 如何解決在命令提示字元下使用 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_ALL` 或 `LANG` 這個環境變數，依據這個環境變數來判斷如何顯示與轉換文字，如果沒有設定的話，就有可能無法正確顯示非英語系語言的文字。

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/977a30f63056b5c79241-image_3067.png)

### 解決方案

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

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

> `SET LC_ALL=C.UTF-8`

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/be1445ec17fbc37d1ceb-image_3068.png)

如果你想要將 `LC_ALL` 環境變數設定在**使用者環境變數**中的話，只要透過 [`SETX`](https://ss64.com/nt/setx.html) 命令就可以快速設定完成，下次就不用再設定了：

> `SETX LC_ALL C.UTF-8`

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

> `git config --global core.quotepath false`

**相關連結**

-   [git log output encoding issues on Windows 10 command prompt - Stack Overflow](https://stackoverflow.com/questions/41139067/git-log-output-encoding-issues-on-windows-10-command-prompt)
-   [SetX - Set environment variables - Windows CMD - SS64.com](https://ss64.com/nt/setx.html)
-   [解决git在Windows下的乱码问题 | 净土](http://howiefh.github.io/2014/10/11/git-encoding/)
