解决 cygwin 在 win10 下中文显示乱码的问题

在 win8 和 win10 上安装了 cygwin 之后,在不做任何配置的时候,显示目录下的中文名称的文件或者文件夹都是正常的。然后又尝试了使用 rsync 命令将服务器的中文名称文件同步到本地,服务器的编码是utf-8,也是正常的。以前在 win7 同步服务器文件的时候需要在 rsync 命令中配上 iconv 选项指定字符编码转换,同步回来的中文名称的文件才是正常。现在不需要配置了,挺好的。

但是用了一段时间之后就发现,使用 cygwin 自带的命令窗口 mintty 执行 dos 命令的时候,中文显示都不正常,都是乱码,例如 ping、ipconfig 的时候。执行 dos 命令显示不正常也问题不大,因为使用的不多。但是在使用 java 命令的时候,显示乱码就不好了,执行有误都不知道怎么回事。例如直接输入 javac 中文显示出来的全是乱码。

不过解决这个问题也比较简单,跟在 win7 下配置流程一样即可。

1. 首先是将 mintty Options 中的字符集编码设置为 gbk 格式

2. 修改 cygwin 的配置文件 “.bash_profile”、“.inputrc” 相关属性

可以通过两种方式找到这两个文件

  1. 直接打开cygwin 的安装目录,找到文件夹 home ,然后进入 home 目录下的用户文件夹。

  2. 直接使用使用命令行,先执行命令 “cd ~” 进入home 目录,然后执行命令 “explorer .” 就打开了这两个文件所在的目录了。

2.1. 先在 .bash_profile 文件中添加以下配置:

export LC_CTYPE=zh_CN.GBK
export LANG=zh_CN.GBK
export OUTPUT_CHARSET=GBK
export XMODIFIERS=@im=Chinput3
stty cs8 -istrip
stty pass8
export LESSCHARSET=latin1

2.2. 然后在 .inputrc 文件中找到以下属性,并且取消注释

set meta-flag on
set convert-meta off
set input-meta on
set output-meta on

2.3. 执行 ls 的时候,颜色显示的配置

alias ls='ls --color --show-control-chars'

最后重启 cygwin 就可了,添加这些配置之后,rsync 同步服务器的中文名称的文件的时候,服务器编码跟本地编码不一致的时候,还是需要添加 iconv 选项指定编码。

按照这种方式配置之后,已知还存在的问题就是查看本地工程 git 库的历史的时候,中文还是无法正常显示出来,如 git log ,这个还需要查一下原因。

 

编程之美。
原文地址:https://www.cnblogs.com/LuQingshang/p/4929825.html