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