ruby-on-rails - 编码未定义的转换错误 - Ruby on Rails,写入错误

标签 ruby-on-rails ruby

所以我试图从网站下载一个 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 环境之外运行脚本,它运行良好。所以 Rails 以某种方式干扰了写入过程。

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

最佳答案

你可能也可以通过传递来做到这一点

:output_encoding => "binary"

File.open,我认为它会做与模式“wb”相同的事情,也许更清楚。但是很好地找出'wb':)。

是的,在支持 char 编码的 ruby​​ 1.9 中,您经常需要说明有关所需编码的不同内容,包括“空编码”“二进制”。

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

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

关于ruby-on-rails - 编码未定义的转换错误 - Ruby on Rails,写入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11617217/

相关文章:

ruby-on-rails - Heroku PostGres 数据库测试配置

ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError)

ruby-on-rails - 索引中 instance_variable 的 RSpec

Ruby:猴子修补字符串类

ruby-on-rails - 更改连接 search_paths 的线程安全方式

ruby-on-rails - Rails 获取 root_url 错误

ruby - 我无法在替代类的方法中调用属于某些类的方法

ruby-on-rails - rails 和 rake 有什么区别?

ruby-on-rails - Rails App 根文件夹中的 boot.rb 文件中的 Ruby bundler 语句

ruby-on-rails - 如何在 Ruby on Rails 中处理全局变量