如何解决使用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 举报,一经查实,本站将立刻删除。