Использование 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(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 в БД.
Я подозреваю, что проблема связана с библиотекой CSV, которая является частью Ruby начиная с v1.9.2 (раньше это была внешняя библиотека, называемая более быстрым CSV), потому что я могу выводить в файл на консоль после прочтения файла. 1022 *
Я также попытался вставить #encoding: utf-8 в начале кода.