使用gem命令时,“未知的编码名称”

问题描述

在使用Cygwin环境的Windows 10上,出现以下错误

 $ gem list
 ERROR:  Loading command: list (ArgumentError)
      unkNown encoding name - CP20127
 ERROR:  While executing gem ... (NoMethodError)
      undefined method `invoke_with_build_args' for nil:NilClass

我有

 $ gem --version
 3.0.    
 $ ruby --version
 ruby 2.6.4p104 (2019-08-28 revision 67798) [x86_64-cygwin]
 $ echo $LANG
 en_GB

在薄荷终端(版本3.1.6)中运行

我已经有好几个月没有使用 gem 命令了。它确实可以工作一次,但是当然其中涉及的任何组件都已在几次之间进行了更新。我不知道CP20127的编码来源。在我看来,它看起来像不是有效的编码名称或Windows代码名称,但确实似乎是Windows正在使用:

$ chcp
Aktive Codepage: 20127

我从不摆弄代码页,我想知道此设置来自何处,以及为什么它会影响我的 gem 命令。

更新

我尝试了以下操作:

chcp 850

此后,gem list起作用。因此,罪魁祸首是代码页设置。现在我的问题是:由于我从未在任何地方明确设置代码页,最可能的原因是代码页设置不正确?

更新2

与此同时,我发现CP20127是由mintty设置的,而在另一个终端(例如,普通的Windows命令控制台或conemu控制台)中,我的外壳具有CP850。我还发现CP65001(Unicode代码页)不要破坏gem命令。

JörgWMittag在他的评论中指出,CP20127是ASCII代码页,所以我想知道为什么gem命令不能使用它。换句话说:是gem中的错误(因为它不应与此CP一起纾困),还是mintty中的错误(因为它设置了此CP),还是我错过了一些东西?还有吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)