如果以块的形式读取它,如何在Net :: HTTP响应上设置编码?

时间:2015-04-30 12:19:13

标签: ruby character-encoding

是否可以使用Net::HTTP强制对read_body响应进行编码?我知道有可能call force_encoding on the response.body itself,但这意味着你必须阅读整个回复并失去阅读它的好处。

我正在从uri读取csv文件(我还不想解析CSV)并将其写入本地文件:

Net::HTTP.start(uri.host, uri.port) do |http|
  request = Net::HTTP::Get.new(uri)

  http.request request do |response|
    File.open(target_file, 'w') do |f|
      response.read_body do |chunk|
        f.write(chunk)
      end
    end
  end
end

内容编码为ISO-8859-1,但Net::HTTP将其视为ASCII 8BIT。

(我通过将其写成二进制并稍后处理编码来解决问题)

0 个答案:

没有答案