1

Rails 3.2 と CSV ライブラリを使用して CSV ファイルをインポートします。私はこのように使用します:

CSV.foreach(open(csv_url), :headers => true) do |p|

ローカル コンピューターで実行すると正常に動作しますが、何らかの理由で Heroku の一部のレコードでエラーが発生して失敗します。

incompatible character encodings: ASCII-8BIT and UTF-8

単純に 2 つの文字列を追加する、私が定義したメソッドでは失敗します。

def name_and_brand
  "#{name} #{brand.name}"
end

ただし、すべてではなく、一部のレコードでのみ失敗します。

これについて多くの情報を読みましたが、まだ解決方法がわかりません。

解析しているテキストのエンコードを単純に出力すると、ローカル コンピューターでは と表示されますUTF-8が、Heroku では と表示されますASCII-8BIT

"a".encodingコンソールで実行すると、出力されUTF-8、Heroku も出力されUTF-8ます。

これまでに試したこと

# in application.rb
config.encoding = "utf-8"

# in environment.rb
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8

# in other files
# encoding: UTF-8

私が見つけた違いの 1 つは、Heroku が Ruby 1.9.2 を使用し、ローカル マシンで 1.9.3 を使用していることです。それはそれでしょうか?

もっと試すことができるアイデアはありますか?

編集

gemfile を追加することで、heroku で Ruby バージョンを明示的に選択できることがわかりましたruby "1.9.3"。私の問題を修正したようです。

4

1 に答える 1

0

ruby "1.9.3"Gemfileを追加して、Ruby のバージョンを明示的に 1.9.3 に変更する必要がありました。

于 2012-07-08T07:58:29.587 に答える