2

我在 Win7-64 位上使用 cygwin,并将“zh_CN.UTF-8”作为默认语言环境设置。有时,cygwin 的某些输出无法通过错误的编码读取,如下所示:

[junit] ▒▒▒▒: ▒Ҳ▒▒▒▒▒▒޷▒▒▒▒▒▒▒▒▒ can't

任何的想法?谢谢。

4

2 回答 2

6

虽然 sharajava 自己找到了解决方案,但不得不说,这个解决方案至少对我来说不是很可取。问题是如果您将文本的终端选项(mintty实际上是“CharSet”)更改为“GBK”,屏幕上会显示什么 UTF-8 字符?它们将是混乱的、不可读的代码。我在 VIM 上进行了实验,无论是中文欢迎文本还是包含中文字符的 UTF-8 编码源代码都显示为不可读的代码。这对我或大多数人来说是不可接受的。

最后,我想出了一种方法来绕过 Windows 命令提示符(即cmd.exe)的缺陷,并启用mintty运行 DOS 命令而不会受到混乱代码的影响。这是我的解决方案,可能会有所帮助。

测试环境:
操作系统:Win7 64位简体中文
Cygwin:64位
命令提示符:默认代码页936

配置:

  • 将 Cygwin 的语言环境设置zh_CN.UTF-8为大多数人想要的
  • 添加Locale=zh_CNCharset=UTF-8使用.minttyrcUTF mintty-8 作为输出编码
  • 添加cmd /c chcp 65001.bashrc

现在您可以直接在 , 等ipconfigDOS命令上运行,甚至可以与taskkill,等linux 命令一起运行。每次登录 bash 时,它都会告诉您输出编码已暂时更改为 UTF-8 的意思。help.exeformat.comminttylessgrepActive code page: 65001cmd.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

另请参阅:
Windows 命令行中的 Unicode 字符 - 如何?
我的应用程序打印国际字符,但我只看到灰色框

于 2014-11-18T07:39:53.860 回答
0

http://cygwin.com/faq-nochunks.html#faq.using.weirdchars

只是这里的一些汉字造成的。

更改文本的终端选项,选择字符集为“GBK”。有用。

于 2012-05-11T07:42:42.223 回答