3.3.4 Cygwin下Git的中文支持

Cygwin的当前版本是1.7.x,对中文的支持非常好。无需任何配置就可以在Cygwin的窗口内输入中文,执行ls命令就可以显示中文的文件名。这与六七年前的Cygwin 1.5.x完全不一样了,老版本的Cygwin还需要进行一些配置才能在控制台输入中文和显示中文,但是最新版本的Cygwin已经完全不需要了。后面要介绍的msysGit的shell环境仍然需要进行相关的配置(同老版本Cygwin)才能够正常显示和输入中文。

Cygwin默认使用UTF-8字符集,并能巧妙地与Windows系统的字符集进行转换。在Cygwin下可执行locale命令查看Cygwin下正在使用的字符集:


$locale

LANG=C.UTF-8

LC_CTYPE="C.UTF-8"

LC_NUMERIC="C.UTF-8"

LC_TIME="C.UTF-8"

LC_COLLATE="C.UTF-8"

LC_MONETARY="C.UTF-8"

LC_MESSAGES="C.UTF-8"

LC_ALL=


正因为如此,Cygwin下的Git对中文的支持也非常出色。虽然中文的Windows本身使用GBK字符集,但是在Cygwin下,Git就如同工作在采用UTF-8字符集的Linux下,对中文的支持非常的好:

在提交时,可以在提交说明中输入中文。

显示提交历史时,能够正常显示提交说明中的中文字符。

可以添加文件名称为中文的文件,并可以在使用UTF-8字符集的Linux环境中克隆和检出。

可以创建带有中文字符的里程碑名称。

但是和Linux平台一样,在默认设置下,文件名称中包含中文的文件,在工作区状态输出、查看历史更改概要,以及在补丁文件中,文件名中的中文不能正确地显示,而是用若干八进制字符编码来显示,如下:


$git status-s

?? "\350\257\264\346\230\216.txt"

$printf "\350\257\264\346\230\216.txt"

说明.txt


配置变量core.quotepath设置为false就可以解决中文文件名在这些Git命令输出中的显示问题。


$git config—global core.quotepath false

$git status-s

?? 说明.txt