gpt4 book ai didi

encoding - cygwin 的某些输出无法使用错误的编码读取?

转载 作者:行者123 更新时间:2023-12-02 01:16:42 25 4
gpt4 key购买 nike

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

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

有什么想法吗?谢谢。

最佳答案

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

最后我想出了一种方法来绕过 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 上,甚至与 lessgrep 等 linux 命令一起使用。每次登录 bash 时,它都会告诉您 Active code page: 65001 表示 cmd.exe 的输出编码已暂时更改为 UTF-8。

cmd.exe的code-page修改为65001时,cmd.exe将不再使用中文作为提示文本语言(改为英文),中文目录为也不支持。这是cmd.exe的缺陷,与mintty无关。不知何故,mintty 设法输出了带有 cp65001 的 cmd.exe 无法输出的汉字。我无法解释这一点,无论如何,它有效。

要设置 cygwin 的语言环境,您可以将以下代码添加到您的 .bashrc:

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

另见:
Unicode characters in Windows command line - how?
My application prints international characters but I only see gray boxes

关于encoding - cygwin 的某些输出无法使用错误的编码读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10510618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com