【发布时间】:2015-11-29 11:59:08
【问题描述】:
我正在尝试在 Rails 中迭代远程 nginx 日志文件(压缩的 .gz 文件),但在文件中的某个位置出现此错误:
TTPArgumentError: invalid byte sequence in UTF-8
我也尝试过强制编码,虽然看起来编码已经是 UTF8:
logfile = logfile.force_encoding("UTF-8")
我正在使用的方法:
def remote_update
uri = "http://" + self.url + "/localhost.access.log.2.gz"
source = open(uri)
gz = Zlib::GzipReader.new(source)
logfile = gz.read
# prints UTF-8
print logfile.encoding.name
logfile = logfile.force_encoding("UTF-8")
# prints UTF-8
print logfile.encoding.name
logfile.each_line do |line|
print line[/\/someregex\/1\/(.*)\//,1]
end
end
真的试图理解为什么会发生这种情况(试图查看其他 SO 线程但没有成功)。这里有什么问题?
更新:
添加异常的跟踪:
HTTPArgumentError: invalid byte sequence in UTF-8
from /Users/T/workspace/sample_app/app/models/server.rb:25:in `[]'
from /Users/T/workspace/sample_app/app/models/server.rb:25:in `block in remote_update'
from /Users/T/workspace/sample_app/app/models/server.rb:24:in `each_line'
from /Users/T/workspace/sample_app/app/models/server.rb:24:in `remote_update'
from (irb):2
from /Users/T/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.2.5/lib/rails/commands/console.rb:110:in `start'
from /Users/T/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.2.5/lib/rails/commands/console.rb:9:in `start'
【问题讨论】:
标签: ruby-on-rails ruby utf-8 gzip zlib