diff --git a/lib/active_admin_import/model.rb b/lib/active_admin_import/model.rb index a5f173f..397d207 100644 --- a/lib/active_admin_import/model.rb +++ b/lib/active_admin_import/model.rb @@ -132,14 +132,12 @@ def define_methods_for(attr_name) end def encode(data) - data = data.force_encoding("UTF-8") - unless data.valid_encoding? - data = data.encode(force_encoding, - invalid: :replace, undef: :replace, replace: "") - end + data = data.force_encoding(force_encoding) if force_encoding? + data = data.encode('UTF-8', + invalid: :replace, undef: :replace) begin data.sub("\xEF\xBB\xBF", "") # bom - rescue ArgumentError => _ + rescue StandardError => _ data end end diff --git a/spec/fixtures/files/authors_win1251_win_endline.csv b/spec/fixtures/files/authors_win1251_win_endline.csv index 4c16d28..c21dd61 100644 --- a/spec/fixtures/files/authors_win1251_win_endline.csv +++ b/spec/fixtures/files/authors_win1251_win_endline.csv @@ -1,3 +1,3 @@ Name,Last name,Birthday -Алексей,Панкратов,1986-05-01 +,,1986-05-01 Jane,Roe,1988-11-16 diff --git a/spec/import_spec.rb b/spec/import_spec.rb index 5088a35..0cf63bc 100644 --- a/spec/import_spec.rb +++ b/spec/import_spec.rb @@ -113,6 +113,9 @@ def upload_file!(name, ext='csv') end context "Win1251" do + let(:options) { + {template_object: ActiveAdminImport::Model.new(force_encoding: "Windows-1251")} + } before do upload_file!(:authors_win1251_win_endline)