UTF-8編碼終端下Git diff GBK編碼文件亂碼解決
問題現象
在Mac筆記本上喜歡使用iTerm2終端,配色比較漂亮養眼,同時考慮兼容性,默認終端環境編碼采用UTF-8編碼。
平時處理代碼時,會遇到使用GBK編碼的文件,這時使用默認的git diff命令,可以顯示出文件差異,但是由於編碼
差異,終端顯示出來是亂碼,如下:

初步解決
這個亂碼問題的原因,是git通過diff正確輸出了文件差異,但是終端無法正常顯示GBK。因此想到了可以使用iconv對
輸出結果進行一次轉換來正常顯示,如下:

優化進階
上面處理的方法,一個是比價麻煩,每次都需要輸入很長的命令;另一個是沒有高亮,不好看。
所以考慮使用系統alias來解決,帶參數的alias可以采用如下寫法:
alias gdg='git_diff_gbk() { git diff $@ | iconv -f gbk -t utf-8 | diff }; git_diff_gbk'
之后就可以愉快的使用快捷命令gdg顯示文件差異了:

