2012-07-07 49 views
1

我使用Rails 3.2和CSV庫導入CSV文件。 我用這樣的:導入CSV和編碼

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

當我能正常工作我的本地計算機上運行,​​但由於某種原因失敗了在Heroku上的一些記錄與錯誤:

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

它失敗在我已經定義的方法中,簡單地附加兩個字符串:

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 

一個不同之處,我發現的是,Heroku的使用Ruby 1.9.2和我在我的本地機器上使用1.9.3。這可能嗎?

任何想法,我可以嘗試更多?

編輯

我發現,你可以明確地在Gemfile中添加ruby "1.9.3"選擇在Heroku紅寶石版本。似乎已經解決了我的問題。

+0

我使用Ruby 1.9.3p194但我仍然有同樣的問題將ruby "1.9.3"!有誰知道如何強制上傳文件的編碼? – Jonatan 2012-10-15 21:11:48

回答

0

我不得不紅寶石版本明確更改爲1.9.3在我的Gemfile