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
。
現在,也許這不是一個錯誤;任何人都可以告訴我這種行爲,是否有必要凍結選項散列,還是有其他的最佳做法?
解決方法可能是傳遞options.dup –
好像'CSV.read'使用'Hash#delete'來提取選項。 – mikezter