我正在尝试打开文件,告诉Ruby 1.9.3将它们视为UTF-8编码。
require 'pathname'
Pathname.glob("/Users/Wes/Desktop/uf2/*.ics").each { |f|
puts f.read(["encoding:UTF-8"])
}
类文档经历了几个间接层,所以我不确定我是否正确指定了编码。但是,当我尝试它时,我收到此错误消息
ICS_scanner_strucdoc.rb:4:在read': can't convert Array into Integer (TypeError)
from ICS_scanner_strucdoc.rb:4:in
中读取'
来自ICS_scanner_strucdoc.rb:4:block in <main>'
from ICS_scanner_strucdoc.rb:3:in
每个&#39;
来自ICS_scanner_strucdoc.rb:3:在`&#39;
此错误消息让我相信read正在尝试将open_args解释为可选的前导参数,这将是读取的长度。
如果我将可选参数放入,如put f.read(100000,0,[&#34; encoding:UTF-8&#34;]),我收到一条错误消息,指出参数太多。
仅指定编码的适当方法是什么?说这是文档和类的行为之间的不一致是否正确?
Mac OS 10.8 rvm当前报道&#34; ruby-1.9.3-p484&#34;
答案 0 :(得分:1)
我不确定您是否要为路径名或文件本身指定编码。
如果是后者,这可能是你想要的。
Pathname.glob("/Users/Wes/Desktop/uf2/*.ics").each { |f|
puts File.open(f,"r:UTF-8")
}
使用Pathname.read
,您可以这样写。
Pathname.glob("/Users/Wes/Desktop/uf2/*.ics").each do |f|
path = Pathname(f)
puts path.read
end