Polskie znaki - znowu problem

Taki plik sample/import.rb sobie stworzyłem (Spree 0.30)

[code]require ‘csv’

CSV.foreach("#{Rails.root}/db/data_for_import/products.csv", headers: true, converters: :numeric) do |row|
p = Product.create :name => row[“Name”], :price => row[“Price”], :description => “ble ble”
p.available_on = Time.now
end[/code]
odpalam rake db:sample

wszystko jest OK dopóki w plku products.csv nie ma polskich znaków, jak są polskie znaki to wywala mi błąd:

incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)

Błąd dotyczy row[“Name”] w 4 wierszu

Rzut okiem na dokumentację i kod źródłowy tej metody:

def self.foreach(path, options = Hash.new, &block) encoding = options.delete(:encoding) mode = "rb" mode << ":#{encoding}" if encoding open(path, mode, options) do |csv| csv.each(&block) end end
Spróbowałbym dodać do opcji :encoding => “utf8”, lub coś podobnego.

qoobaa, wielkie dzięki. Teraz śmiga.

Pociągnę jeszcze wątek.

Czy są jakieś biblioteki do obróbki plików .xls ?

Bo w Excelu 2010 nie widzę możliwości zapisu do pliku .csv z kodowaniem UTF8

Do obróbki plików Excela (w wersji do 2010, czyli .xls) jest na przykład Spreadsheet - pozwala na odczyt i zapis.

Jeśli potrzebujesz tylko odczyt, to możesz spróbować z Roo - ale oferuje również odczyt z plików .ods, .xlsx, czy z Google Docs.

jest gem roo

a gdzies po drodze przelec to iconv i po sprawie

[code=ruby]#!/usr/bin/env ruby
require ‘rubygems’
require ‘roo’

pwd = File.dirname(FILE)
file = ARGV[0]
file_path = “#{pwd}/#{file}”

xls = Excel.new(file_path)
xls.to_csv("#{pwd}/#{file}.csv")[/code]
Nie zdążyłem ;]