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"
。私の問題を修正したようです。