【问题标题】:Ruby 1.9.3 Invalid byte sequence in UTF-8 explanation neededRuby 1.9.3 需要 UTF-8 解释中的无效字节序列
【发布时间】:2014-02-26 11:26:08
【问题描述】:

我在 Windows 7 上通过 Cygwin 安装了 RVM 和 Ruby。我现在正尝试按照 this guide 安装 Omega 捆绑包。命令是

bundle install

这会给出错误“找不到命令”。解决方案是通过安装捆绑器

gem install bundler

但这会给出“UTF-8 错误中的无效字节序列”。 this post 中描述了此问题的解决方案。但我不明白我应该把这个 sn-p 放在哪里。

require 'iconv' unless String.method_defined?(:encode)
if String.method_defined?(:encode)
  file_contents.encode!('UTF-8', 'UTF-8', :invalid => :replace)
else
  ic = Iconv.new('UTF-8', 'UTF-8//IGNORE')
  file_contents = ic.iconv(file_contents)
end

请说明将这段代码放在哪里。

谢谢!

【问题讨论】:

  • gem install ... 期间的此错误消息通常表示自动生成文档有问题,但实际上应该安装 gem。我通常会忽略该消息并使用受影响宝石的在线文档。
  • 嗨尼克。不幸的是 gem 没有安装,因为 'bundle install' 仍然不起作用。
  • 您是否在项目的根文件夹中执行了gem install(这可能是必要的,因为rvm 可以自动切换Ruby 版本,因此您的安装可能会转到一个Ruby,而您的意思是另一个。 ..)。或者,您的错误消息是“Bundler::GemfileNotFound”吗?这意味着不同的东西。 . .
  • 您好,是的,我尝试安装在根文件夹中(默认情况下会打开 cygwin)。我收到的错误是:ERROR: while execution gem ... (ArgumentError) invalid byte sequence in UTF-8.

标签: ruby utf-8 rvm encode


【解决方案1】:

我有 64 位 Cygwin、Ruby 2.0.0 和 gem 2.4.1,并且遇到了同样的问题。 gem install ...gem update,一切都以“错误:在执行 gem ... (ArgumentError) UTF-8 中的无效字节序列”结尾。

我还将所有语言环境设置为“en_US.UTF-8”。

我在某处读到它应该有助于将LANG 设置为空字符串或“C.BINARY”,但它没有帮助。但这是开始试验的好提示。

最后我通过将LANGLC_ALL 设置为空字符串解决了这个问题。 所有其他语言环境变量(LC_CTYPE 等)都自动设置为“C.UTF -8" 这样,LANGLC_ALL 仍然是空的。

现在gem 终于可以工作了。


更新

如果将 LC_CTYPE 设置为 UTF-8,则似乎特别会导致该问题。因此将其设置为 C.BINARY 应该会有所帮助。其他 locale 环境变量可以设置为 UTF-8 而不影响它。

export LC_CTYPE=C.BINARY

【讨论】:

  • 设置LC_CTYPE=C.BINARY解决了这个问题,谢谢!
【解决方案2】:

只需将字符设置为 Cygwin 的 UTF-8 以外的字符

单击左上角图标 --> 选项 --> 文本 --> 将“字符集”设置为某物(例如 GBK)

【讨论】:

    【解决方案3】:

    你可以试试这个,它对我有用:

    > $ LANG=C.BINARY gem install bundler
    

    您可以了解更多信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-25
      • 1970-01-01
      • 2012-07-16
      • 2012-01-12
      • 2011-02-28
      • 2012-06-19
      • 2013-03-02
      • 1970-01-01
      相关资源
      最近更新 更多