Ruby хеш-объект изменен библиотекой CSV - PullRequest
1 голос
/ 20 июля 2011

Недавно я столкнулся со странной проблемой:

В 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 Ответ

0 голосов
/ 20 июля 2011

Это ошибка. Это простая ошибка, Я писал о том, что Rails тоже делал это в прошлом .

Эта ошибка была непреднамеренно исправлена ​​ для предстоящего Ruby 1.9.3.

Тем временем вы можете передать options.dup, чтобы избежать побочных эффектов CSV.read.

Та же проблема все еще присутствовала с CSV.generate, и будет исправлена ​​и для Ruby 1.9.3 .

...