2009-08-25 6 views
2

데이터 마이 그 레이션에서 멤버 데이터베이스를로드하려고합니다. 상당수의 이름에는 "Ciarán"과 같은 특수 문자가 있습니다. 나는 다음과 같은 간단한 예제를 설정 한 :"Ciarán"과 같은 이름의 행을 FasterCSV를 사용하여 가져 오는 방법은 무엇입니까?

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을 검색하고 있지만 아직 해결책을 찾지 못했습니다. 특수 문자를 유지하고 싶지만 실패한 각 구성원 이름을 편집하지 않아도됩니다.

많은 감사는 브렛

답변

3

나는이 KCODE을 설정하여 고정 될 수 있다는 것을 다른 곳에서 읽었습니다. 예 :

$KCODE = "U" 

상단에 붙이십시오.

James Edward Gray는 FasterCSV에 인코딩 지원을 추가했으나 트렁크에만 있다고 말했습니다.

+1

실제로 내가 잘못 진단 한 것 같습니다. 파일은 UTF-8이 아니지만, 생각했지만 ISO-8859-1이었습니다. 나는 변환했다.하지만 실제로 UTF-i를 가지고 있다면이 두 가지 대답이 모두 효과가있을 것이다. – Brett

4

박쥐에서 제대로 작동하지만 인코딩을 변경해야하는 경우 FasterCSV에 인코딩 옵션을 전달할 수 있습니다. 예를 들어, UTF-8을 사용하도록 지시하기 위해, 당신은이 작업을 수행 할 수 있습니다

require 'rubygems' 
require 'fastercsv' 

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

인코딩 옵션은 new에 대한 설명서에 나와 있습니다.