Rails 法文 rake db:seed 失败

stc · 2012年07月23日 · 最后由 stc 回复于 2012年07月25日 · 3652 次阅读

我有个seed文件myseed.csv ,内含法文,是utf8编码的,

>file myseed.csv
myseed.csv : UTF-8 Unicode English text

运行rake db:seed 的时候会提示

incompatible character encodings: UTF-8 and ASCII-8BIT

寻帮助,谢谢先

共收到 13 条回复

文件顶部加

# encoding: UTF-8

@Rei 3ks, seed.rb 已经加了,没有作用。 csv 文件加不了,加了提示说格式不对。

Encoding.default_external = Encoding::UTF_8

#3楼 @Saito 谢了,不过还是没用..悲剧,考虑直接用sql语句导了..

你的代码怎么写的啊 这么谁能猜出来问题在哪

sorry,附上代码

seed.rb

CSV.read(File.dirname(__FILE__) + "/seeds_data/myseed.csv",:headers => true).each do |row|
    MyClass.create(row.to_hash)
end  

数据 "m_id","e_id","geo","country","name","full_name" 3,1006332,"City","FR","Bagnols-en-Forêt","Bagnols-en-Forêt,Provence-Alpes-Côte d'Azur,France"

#6楼 @stc 需要保证csv里面文件编码为utf8, 可以先自己用File.read读出来,打印看是否正常 。seed.rb是不是utf8不重要。

#6楼 @stc 用的csv还是faster csv?

#7楼 @hhuai csv文件正确编码,在seed.rb 文件里 p File.read(Rails.root.to_s + "/db/seeds_data/myseed.csv") 打印正常

#8楼 @hooopo csv , seed.rb 里require 'csv'

#10楼 @stc 换成faster csv吧

#10楼 @stc 那想知道一下异常的堆栈,是错在入库,还是错在CSV读取。

@Rei @Saito @hooopo @hhuai 谢谢各位了,今天查到原因了,csv文件里存在部分非正常utf-8编码的字节,导致了这个问题。我目前

converter = Iconv.new 'UTF-8//IGNORE', 'UTF-8'
value = converter.iconv(value)

先处理过去了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册