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显示文件差异了: