2011-07-20 75 views
1

我最近遇到一個奇怪的問題:通過CSV的庫而改變Ruby的哈希對象

在Ruby 1.9,用更新的CSV圖書館,我定義

options = {:headers => true, :col_sep => ';', :encoding => 'UTF-8'} 

的正常工作,我第一次把它作爲對CSV.read的一個參數。

但是當我在下一行同時做另一個文件時,顯然忽略了編碼!

所以,儘管這個工作,它應該:

options = {:headers => true, :col_sep => ';', :encoding => 'UTF-8'} 
stockdata = CSV.read('CurrentStock_1.csv', options) 
auctiondata = CSV.read('Export_auktion_ebay-einstellungen.csv', {:headers => true, :col_sep => ';', :encoding => 'UTF-8'}) 

我不能快捷方式是這樣的:

options = {:headers => true, :col_sep => ';', :encoding => 'UTF-8'} 
stockdata = CSV.read('CurrentStock_1.csv', options) 
auctiondata = CSV.read('Export_auktion_ebay-einstellungen.csv', options) 

auctiondata則是所有在ASCII-8Bit

現在,也許這不是一個錯誤;任何人都可以告訴我這種行爲,是否有必要凍結選項散列,還是有其他的最佳做法?

+1

解決方法可能是傳遞options.dup –

+0

好像'CSV.read'使用'Hash#delete'來提取選項。 – mikezter

回答

相關問題