记一次secureCRT中文乱码解决过程

一、什么是secureCRT?

secureCRT是一款终端软件,像windows中的xShell软件一样, 在 macbook 上基本可以取代系统自带的终端工具,这个软件也有windows版本。

我的电脑是macbook,所以以下描述都只针对mac系统

二、为什么是secureCRT?

其实我用macbook自带的终端工具已经有一段时间,觉得并没有什么不适。后来手里的服务器多了,记住密码是一个问题。自带的终端工具,经过我的研究,好像只能做到记住服务器,不能记住密码自动连接。一个个连接实在是太费精力,所以就想找一款像 windows平台上的xShell的软件,来自动记住我的服务器用户名密码,点击某个服务器时就可以自动连接,不用每次连接时都输入密码。找了很多款终端软件,像ShellCraft,SSH Shell,Zoc Terminal等等,总是不尽人意,最后找到了secureCRT,觉得还可以,下载量也多,就决定用它了。

三、中文乱码问题

之前在自带终端里是没有过中文乱码问题的。在我使用secureCRT的过程中,出现了乱码问题。

最开始的时候,以为只是软件编码问题。但其实这里乱码问题分几类,分别对应不同的解决办法,以下会有描述。

1.git log,git diff中的乱码

如图所示: git 乱码

在网上找了很多教程,普遍的说法是:

  • 设置secureCRT的编码为UTF-8 git 乱码 编码设置为utf-8

但我发现设置之后并没有效果。

后来我发现使用cat命令查看 git diff 中的某个差异文件的时候,却没有乱码。这个时候机智的我已猜到,这可能是git的编码问题,所以在git配置中修改配置文件设置编码:

1
vi ~/.gitconfig

添加配置项如下:

1
2
3
4
5
6
7
8
9
[core]
	quotepath = false
[gui]
	encoding = utf-8
[i18n]
	commitencoding = utf-8
	logoutputencoding = utf-8
[svn]
	pathnameenoding = utf-8

保存退出。信心满满,觉得大功要告成啦!

但现实总是残酷的——并没有什么作用!

实际上,git diffgit log 是通过 less 进行输出的。所以配置less字符编码就可以:

1
export LESSCHARSET=UTF-8

重点:网上有很多攻略上说,在 /etc/profile 文件里面增加上面的代码。但我这里亲测无用,直接在命令行里执行上面这句话才会成功,或者在 $home/.bash_profile文件中添加上面的代码。

此时,再执行git log, git diff,完美显示中文。

2.vi,vim中的乱码

本以为再无问题。后来无意中vim一个文件的时候,又出现乱码了!

这个时候,需要确定是否字符集的问题。vim文件之后使用:set encoding=utf8看看是否能显示正常。如果能显示正常基本就能确认是字符编码的问题。

这个时候,解决办法就是更改vim环境变量:

  • 使用 vi ~/.vimrc (有些同学电脑上可能没有这个文件,如果没有,新建这个文件即可)
  • 在文件中添加代码 set encoding=utf-8 fileencodings=ut-8,ucs-bom,p936,big5
  • 保存退出

这个时候再 vim 打开文件就没有乱码问题了。

结束语

为了解决这个问题,明白到问题所在,还是花了一些时间。所以记录一篇文章在此,希望有缘人可以看到,并能够帮助到你,这就最好了。