我在 Win7-64 位上使用 cygwin,并将“zh_CN.UTF-8”作为默认语言环境设置。有时,cygwin 的某些输出无法通过错误的编码读取,如下所示:
[junit] ▒▒▒▒: ▒Ҳ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ can't
任何的想法?谢谢。
虽然 sharajava 自己找到了解决方案,但不得不说,这个解决方案至少对我来说不是很可取。问题是如果您将文本的终端选项(mintty
实际上是“CharSet”)更改为“GBK”,屏幕上会显示什么 UTF-8 字符?它们将是混乱的、不可读的代码。我在 VIM 上进行了实验,无论是中文欢迎文本还是包含中文字符的 UTF-8 编码源代码都显示为不可读的代码。这对我或大多数人来说是不可接受的。
最后,我想出了一种方法来绕过 Windows 命令提示符(即cmd.exe
)的缺陷,并启用mintty
运行 DOS 命令而不会受到混乱代码的影响。这是我的解决方案,可能会有所帮助。
测试环境:
操作系统:Win7 64位简体中文
Cygwin:64位
命令提示符:默认代码页936
配置:
zh_CN.UTF-8
为大多数人想要的Locale=zh_CN
并Charset=UTF-8
使用.minttyrc
UTF mintty
-8 作为输出编码cmd /c chcp 65001
到.bashrc
现在您可以直接在 , 等ipconfig
DOS命令上运行,甚至可以与taskkill
,等linux 命令一起运行。每次登录 bash 时,它都会告诉您输出编码已暂时更改为 UTF-8 的意思。help.exe
format.com
mintty
less
grep
Active code page: 65001
cmd.exe
当 code-page ofcmd.exe
更改为 65001 时,cmd.exe
将不再使用中文作为提示文本语言(改为英文),也不支持中文目录。这是一个缺陷,cmd.exe
与它无关mintty
。不知何故,设法输出了cp65001无法输出的mintty
汉字。cmd.exe
我无法解释这一点,无论如何,它有效。
要设置 cygwin 的语言环境,您可以将以下代码添加到您的.bashrc
:
export LC_ALL=zh_CN.UTF-8
export LC_CTYPE=zh_CN.UTF-8
export LANG=zh_CN.UTF-8