Как импортировать с помощью FasterCSV строку с именем, например «Ciarán»? - PullRequest
2 голосов
/ 25 августа 2009

Я пытаюсь загрузить в базу данных миграцию базы данных участников. Многие из имен имеют специальные символы, такие как «Ciarán». Я создал простой пример, подобный этому:

require 'rubygems'
require 'fastercsv'

FasterCSV.foreach("/Users/developer/Work/madmin/db/data/Members.csv") do |row|
  puts row.inspect
end

и я получаю следующее:

/usr/local/lib/ruby/gems/1.8/gems/fastercsv-1.5.0/lib/faster_csv.rb:1616:in `shift': FasterCSV::MalformedCSVError (FasterCSV::MalformedCSVError)

когда я попал в строку с этим именем.

Я гуглил кодировку символов и UTF-8, но пока не нашел решения. Я хотел бы сохранить специальные символы, но не хотел бы редактировать каждое имя члена, которое не удалось.

Большое спасибо, Brett

Ответы [ 2 ]

4 голосов
/ 25 августа 2009

Это работает сразу, но если вам нужно изменить кодировку, вы можете передать опцию кодирования в FasterCSV. Например, чтобы заставить его использовать UTF-8, вы можете сделать это:

require 'rubygems'
require 'fastercsv'

FasterCSV.foreach("some file.csv", :encoding => 'u') do |row|
  puts row.inspect
end

Опции кодирования перечислены в документации для new.

3 голосов
/ 25 августа 2009

В другом месте я читал, что это можно исправить установкой KCODE. Например:

$KCODE = "U"

Прикрепите это вверху.

Джеймс Эдвард Грей также сказал, что он добавил поддержку кодирования в FasterCSV, но он только в транке.

...