yingyuf

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

posted on 2021-04-09 12:14  yingyuf  阅读(1416)  评论(0编辑  收藏  举报