2009-08-25 49 views
2

我想加載我的數據遷移成員數據庫。不少名稱都有特殊字符,如「Ciarán」。我已經建立了一個簡單的例子是這樣的:如何使用FasterCSV導入一個名爲「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,但還沒有找到解決方案。我想保留特殊字符,但不必編輯每個失敗的成員名稱。

非常感謝, 佈雷特

回答

3

我在其他地方閱讀,這可以通過設置KCODE固定。例如:

$KCODE = "U" 

將此粘貼在頂部。

詹姆斯·愛德華·格雷也表示他在FasterCSV中增加了編碼支持,但它只在中繼線上。

+1

看起來我實際上是錯誤診斷 - 文件是不是UTF-8,因爲我認爲,但ISO-8859-1。我轉換 - 但如果我真的有UTF-i,這兩個答案都可以工作。 – Brett 2009-08-25 15:54:01

4

它適用於我,但如果您需要更改編碼,則可以將編碼選項傳遞給FasterCSV。例如,要告訴它使用UTF-8,你可以這樣做:

require 'rubygems' 
require 'fastercsv' 

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

編碼選項爲new的文檔中列出。

相關問題