Jas*_*rwe 11 ruby ruby-on-rails
所以我试图从网站下载一个zip文件并将该数据放入表中.下载以前一直在工作,但突然间,它已不再存在了.我从ASCII-8BIT到UTF-8(Encoding :: UndefinedConversionError)"问题"得到一个"`write":"\ xB6".很奇怪,自从我上次运行脚本以来没有任何改变.以下是出现问题的代码部分.我正在使用一个gem,它允许我解析zip文件中的DBF文件.
这是代码:
`write': "\xB6" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助
更新:显然我在轨道内运行.我在rails环境之外运行脚本,它工作正常.所以Rails在某种程度上干扰了写入过程.
更新2:已解决 - 我将"w"更改为"wb"显然这是由rails 3+引起的.我之前没有尝试过这个.希望这有助于其他人.
你可能也可以通过传递来完成
:output_encoding => "binary"
Run Code Online (Sandbox Code Playgroud)
to File.open,我认为它会与模式“wb”做同样的事情,也许更清楚。但弄清楚“wb”干得不错:)。
是的,在支持 char 编码的 ruby 1.9 中,您经常需要告知有关所需编码的不同信息,包括“空编码”“二进制”。
Rails 可能将 设定Encoding.default_external为 UTF-8,并File使用Encoding.default_external,这可能就是 Rails 与 not-rails 产生差异的原因。
ruby 1.9 中的编码问题肯定会很快变得非常混乱,许多通常隐藏的状态可能会影响到底发生的事情。