一些cygwin的版本输出的只是不能坏编码读取?(Some of the outputs from

2019-07-29 08:19发布

我使用Win7-64bit的cygwin,并与把“zh_CN.UTF-8”作为默认区域设置。 有时,一些从刚刚在cygwin的输出不能坏编码读到这样如下:

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

任何的想法? 谢谢。

Answer 1:

虽然sharajava已经发现自己的解决方案,我不得不说,这个解决方案是不是至少对我来说非常理想。 问题是,如果你改变文本(的“字符集”的终端选项mintty实际上)到“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.minttyrc使得mintty使用UTF-8作为输出编码
  • 添加cmd /c chcp 65001.bashrc

现在你可以运行像DOS命令ipconfigtaskkillhelp.exeformat.com等直接mintty ,即使在Linux命令,如伴侣lessgrep 。 每次你在bash登录时,它会告诉你Active code page: 65001意义的输出编码cmd.exe已经暂时改为UTF-8。

当代码页cmd.exe更改为65001, cmd.exe将不再使用中国作为提示文本语言(英语代替)和中国目录也不支持。 这是一个缺陷cmd.exe并有无关mintty 。 不知何故, mintty设法输出中国的字符, cmd.exe与cp65001不能。 我无法解释这一点,无论如何,它的工作原理。

要设置的cygwin的区域,您可以添加以下代码添加到您.bashrc

export LC_ALL=zh_CN.UTF-8
export LC_CTYPE=zh_CN.UTF-8
export LANG=zh_CN.UTF-8

也可以看看:
在Windows命令行Unicode字符-怎么样?
我的应用程序打印国际字符,但我只看到灰色框



Answer 2:

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

它只是这里的一些中国字符引起的。

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



文章来源: Some of the outputs from cygwin just can not be read with bad encoding?