cmder & cygwin 中文支持解决方案

在 windows 环境下,我们因系统本身自带的 cmd 方案表现很弱,所以我们经常使用其他的解决方案来弥补。而这些方案中最为常见和好用的也就是 cmder 和 cygwin 两种。
今天对于方案中,我们常遇到的问题——中文编码乱码问题来配置使用。

1 使用环境 & 场景

中文环境下,最为常见的编码就是:

  • GBK
  • UTF-8

而在 windows 环境下,这两种编码的文件同时存在是非常常见的,而在 cmd 的终端环境下,想要一次性解决该显示问题,目前来说并不容易,因此,我们当前只能寻找一种最为全面的解决方案,以最大可能来解决该问题。
因此,目前需要来分析一下使用的场景:

  • 程序员编码
  • 各工具使用,如: git、svn等

而对于编码的场景下,我们目前最为推荐的编码格式仍是 utf-8 ,所以,这里也一样的不解释,建议使用 utf-8。
而对于 git & svn 等相关的版本管理工具,这里也是程序员常有遇到的场景,而在 git 序列中,github 的使用常在手边过,而 github 所支持的中文编码就是 utf-8 。
从这些相关的场景分析来看,我们所有可控的场景中,我们最好使用的编码仍然是 utf-8
因此,这里本人也强烈推荐各位,在可以自己控制的情况下,我们应该首选 utf8
场景的主编码确定好后,我们就可以分别针对两种不同工具,来进行相关的支持配置。

配置总体可以分为:

  • 软件界面
  • 终端环境变量
  • 相关工具配置

2 cmder 方案

2.1 界面配置

右键标题栏 > settings
右键菜单

Main > Font charset
字体

这里选择 GB 2312 主要是因为,windows 系统的主要编码还是:ANSI。

2.2 终端环境变量

Settings > Startup > Environment
环境变量

这里的设置,需要关闭 cmder 再重新打开一次生效。
我们可以通过 locale 命令查看设置的结果:

1
2
3
4
5
6
7
8
9
λ locale
LANG=zh_CN.utf-8
LC_CTYPE="zh_CN.utf-8"
LC_NUMERIC="zh_CN.utf-8"
LC_TIME="zh_CN.utf-8"
LC_COLLATE="zh_CN.utf-8"
LC_MONETARY="zh_CN.utf-8"
LC_MESSAGES="zh_CN.utf-8"
LC_ALL=

在新版本 V 1.3.5 中发现无法通过界面设置环境变量保存成功,下面提供另一种实现方法:
在安装目录下找到用户配置文件路径 config/user-profile.cmd ,打开编辑,在其中加入环境变量配置语句:

1
set LANG=zh_CN.utf-8

2.3 相关工具的配置

git 配置

在 git 命令行下,主要是与:

  • i18n.commitencoding
  • i18n.logoutputencoding

两个配置参数有关,我们可以通过以下命令进行配置:

1
2
λ git config --global i18n.commitencoding utf-8
λ git config --global i18n.logoutputencoding utf-8

VIM 配置

vim 是终端下最为常见的文档编辑器,我们可以在 VIM 的配置文件中加入如下配置:

1
2
set fileencoding=cp936
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

注:
查找 vim 配置文件的位置,可以通过进入 vim 后,输入
:version

3 cygwin 方案

3.1 界面配置

右键标题栏 > Options
界面配置

Text
文本

3.2 环境变量配置

修改 ~/.bashrc 文件,加入:
export LANG=“zh_CN.UTF-8”
export OUTPUT_CHARSET=“UTF8”

3.3 相关工具配置

git 和 vim 的配置与 cmder 下是一致的,可以采用同样的方式来处理。
其他配置

4 综合方案

cmder 是一种终端集成器,它同样可以将 cygwin 集成到其内部窗口上。
具体的配置方式,我们可以参考 cmder 官方手册
以下是我的配置截图:
举例

配置后的运行效果图:
运行效果

lfire wechat
欢迎添加