2012-07-23 1 views
9

ウェブサイトからzipファイルをダウンロードし、そのデータをテーブルに格納しようとしています。ダウンロードは以前から行われていましたが、突然それはもうなくなりました。私はASCII-8BITから "UTF-8(Encoding :: UndefinedConversionError)"に "write": "\ xB6"という問題が発生します。非常に奇妙な、私は最後にスクリプトを実行して以来何も変わっていない。ここに問題を抱えているコードの部分があります。私はzipファイル内のDBFファイルを解析することができる宝石を使用しています。符号化未定義変換エラー - Ruby on Rails、書き込みエラー

は、ここでは、コードです:ヘルプ

UPDATEため

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

ありがとう:私は明らかに、レール内で実行されていますよ。私はスクリプトをレール環境の外で走らせ、うまくいきました。だから、Railsは何とか書き込みプロセスに干渉しています。

私は "w"を "wb"に変更しました。明らかに、これはレール3+によって引き起こされたものです。前にこれを試してみるのは私には起こりませんでした。うまくいけば、これは他の人々に役立ちます。

答えて

2

あなたはおそらくも、私はモードとして、「WB」おそらくより明確に同じことをすると思うFile.open

:output_encoding => "binary" 

を渡すことでそれを行っている可能性があります。しかし、素晴らしい仕事は 'wb'を考え出して:)。

ええ、ruby 1.9では、charエンコーディングを認識しているので、 "null encoding"バイナリを含め、必要なエンコーディングについて別のものを伝える必要があります。

レールはEncoding.default_externalをUTF-8に設定しており、FileEncoding.default_externalを使用している可能性があります。これは、レールとレールの違いが原因である可能性があります。

Ruby 1.9でのエンコーディングの問題は、間違いなく何が起こるかに直接影響を及ぼす可能性のある、通常は隠された状態が非常に多く、非常に混乱することがあります。

関連する問題