使用 jruby 1.6.4(ruby-1.9.2-p136)
CSV文件具有UTF-8编码。 内容通常用TextMate显示。
尝试这一点,但我得到的是插入数据库的乱码文本。
CSV.foreach(data_file_path, :headers=>false, :encoding=>"UTF-8", :col_sep=>"^") do |row|
# parse and write to DB
end
一些irb信息:
irb(main):001:0> puts "你好"
你好
=> nil
irb(main):002:0> puts RUBY_VERSION
1.9.2
=> nil
irb(main):003:0>
这些工作:
jruby -e 'puts "你好"'
jruby --1.9 -e 'puts "你好"'
jruby -Ku -e 'puts "你好"'
使用相同的设置,我设法将土耳其字符插入数据库。所以,问题不像Ruby to DB编写问题。
我怀疑问题出在CSV库中,自v1.9.2以来它是Ruby的一部分(它曾经是一个名为fasterCSV的外部库),因为我可以在读取文件后输出到文件到控制台。 / p>
我也尝试在代码片段的顶部插入#encoding:utf-8。
答案 0 :(得分:1)
当CSV包含unicode字符时,“CSV.foreach”(Jruby 1.6.4和1.6.5)中存在unicode编码问题。作为解决方法,您可以使用“CSV.open”而不是“CSV.foreach”。
reader = CSV.open(file, "r")
reader.each do |row|
# do something
end
报告此错误,似乎在Jruby 1.7中得到解决 http://jira.codehaus.org/browse/JRUBY-6266