12

だから私はウェブサイトからzipファイルをダウンロードしてそのデータをテーブルに入れようとしています。ダウンロードは以前は機能していましたが、突然、機能しなくなりました。「`write':" \ xB6 "from ASCII-8BIT to UTF-8(Encoding :: UndefinedConversionError)」の問題が発生します。非常に奇妙なことに、最後にスクリプトを実行してから何も変わっていません。これが問題を抱えているコードの部分です。zipファイル内のDBFファイルを解析できるgemを使用しています。

コードは次のとおりです。

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

助けてくれてありがとう

更新:明らかに、私はレール内を走っています。Rails環境の外でスクリプトを実行しましたが、正常に機能しました。そのため、Railsは書き込みプロセスを何らかの形で妨害しています。

更新2:解決済み-「w」を「wb」に変更しました。これは、レール3+が原因であると思われます。以前にこれを試すことは私には思い浮かびませんでした。うまくいけば、これは他の人々を助けるでしょう。

4

1 に答える 1

2

あなたもおそらく通過することによってそれを行うことができたでしょう

:output_encoding => "binary"

to File.open、これはモード'wb'と同じことを、おそらくもっと明確に行うと思います。しかし、'wb'を理解するのは素晴らしい仕事です:)。

ええ、charエンコーディング対応のruby 1.9では、「nullエンコーディング」「binary」など、必要なエンコーディングについてさまざまなことを伝える必要があることがよくあります。

RailsがEncoding.default_externalUTF-8に設定していて、Fileを使用Encoding.default_externalしている可能性があります。これが、railsとnot-railsが違いを生む理由である可能性があります。

ruby 1.9でのエンコーディングの問題は、非常に速く混乱する可能性があり、通常は非表示の状態が多く、正確に何が起こるかに影響を与える可能性があります。

于 2012-11-04T21:39:30.463 に答える