我想從文件中讀取文本並將其保存在數據庫中。所以我寫了一個示例代碼來輸出我的文件的內容來測試。我在Ruby on Rails應用以下的rake任務:從文件中讀取西里爾文文本
require "active_support/core_ext/string"
namespace :mktu do
task :seed do
Dir.glob("#{Rails.root}/public/mktu/*.txt") do |file|
puts "#{File.basename(file, ".txt")}"
data = File.open(file, "r").read
p data.encoding.name
break_char = ";".encode("UTF-8")
data.mb_chars.split(break_char) do |name|
puts name.strip
end
end
end
end
這裏是我的 「耙mktu:種子--trace」 輸出:
** Invoke mktu:seed (first_time)
** Execute mktu:seed
32
"UTF-8"
rake aborted!
invalid byte sequence in UTF-8
/home/dastan/Projects/rails/tmregister/lib/tasks/prepare.rake:32:in `split'
/home/dastan/Projects/rails/tmregister/lib/tasks/prepare.rake:32:in `block (3 levels) in <top (required)>'
/home/dastan/Projects/rails/tmregister/lib/tasks/prepare.rake:25:in `glob'
/home/dastan/Projects/rails/tmregister/lib/tasks/prepare.rake:25:in `block (2 levels) in <top (required)>'
雖然我的輸出顯示,該文件有UTF- 8編碼,看來split
方法由於編碼問題而找不到任何匹配,所以我得到一個空數組。我怎樣才能解決這個問題?有什麼建議麼?
你可以試試這個:break_char =「;」。encode(「UTF-8」) - > break_char =「;」。force_encoding(「UTF-8」) – nurettin
@pwned同樣的員工,沒有變化。 – dastanko
這是jruby嗎? – nurettin