12

所以我试图从网站下载一个 zip 文件并将该数据放入一个表中。以前可以下载,但是突然不行了。我得到一个“`write': "\xB6" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)”问题。很奇怪,自从我上次运行脚本以来,什么都没有改变。这是有问题的代码部分。我正在使用一个 gem,它允许我解析 zip 文件中的 DBF 文件。

这是代码:

`write': "\xB6" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)

谢谢您的帮助

更新:显然,我正在轨道内运行。我在 rails 环境之外运行脚本,它运行良好。所以 Rails 以某种方式干扰了写入过程。

更新2:已解决-我将“w”更改为“wb”显然这是由rails 3+引起的。我以前没想过要尝试这个。希望这对其他人有所帮助。

4

1 回答 1

2

你可能也可以通过

:output_encoding => "binary"

to File.open,我认为这与模式'wb'做同样的事情,也许更清楚。但是搞清楚'wb'做得很好:)。

是的,在 ruby​​ 1.9 中,它支持字符编码,你经常需要告诉你想要的编码不同的东西,包括“空编码”“二进制”。

Rails 可能将 设置Encoding.default_external为 UTF-8,并且File正在使用Encoding.default_external,这可能就是为什么 rails 与 not-rails 会有所不同。

ruby 1.9 中的编码问题肯定会很快变得非常混乱,有很多通常隐藏的状态会影响所发生的事情。

于 2012-11-04T21:39:30.463 回答