ruby在gem list/install时提示编码等错误的解决方法
2019年3月1日 - 由Bo 0 评论 2011 阅读
有时候在windows上用gem list时都会提示如下错误,很少情况,有一个同事遇到:
C:/Ruby24-x64/lib/ruby/2.4.0/win32/registry.rb:910:in `encode': U+6709 to IBM437 in conversion from UTF-16LE to UTF-8 to IBM437 (Encoding::UndefinedConversionError)
这个在修改C:/Ruby24-x64/lib/ruby/2.4.0/win32/registry.rb里,修改如下内容:
#注释下一行
#LOCALE = Encoding.find(Encoding.locale_charmap)
#新增下一行
LOCALE = Encoding::UTF_8
但如果又遇到了无法gem install的错误的时候,比如错误提示是:
install bundler:1.16.2 ERROR: While executing gem ... (Encoding::CompatibilityError) incompatible character encodings: UTF-8 and ASCII-8BIT
那么修改两个文件就解决了:
#C:\Ruby22-x64\lib\ruby\2.2.0\win32\registry.rb
#LOCALE = Encoding.find(Encoding.locale_charmap)
LOCALE = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
#C:\Ruby22-x64\lib\ruby\2.2.0\resolv.rb
#request[0,2] = [id].pack('n')
request[0,2] = [id].pack('U')