如何正确使用Ruby CGI模块进行gzip输出?

如何正确使用Ruby CGI模块进行gzip输出?,ruby,encoding,cgi,gzip,deflate,Ruby,Encoding,Cgi,Gzip,Deflate,这段代码在Firefox 38.0.1(内容编码错误)和Google Chrome 42.0.2311.152(错误内容解码失败)中不起作用,但是它在Opera 12.16和cURL(使用--compressed选项)中起作用: #/usr/bin/ruby 需要“cgi” 需要“zlib” cgi=cgi.new(:accept_charset=>“UTF-8”) #标题 放置“内容类型:text/html;字符集=\“UTF-8” 放入“内容编码:gzip” 放 #生成一些html输出 ou

这段代码在Firefox 38.0.1(内容编码错误)和Google Chrome 42.0.2311.152(错误内容解码失败)中不起作用,但是它在Opera 12.16和cURL(使用--compressed选项)中起作用:

#/usr/bin/ruby
需要“cgi”
需要“zlib”
cgi=cgi.new(:accept_charset=>“UTF-8”)
#标题
放置“内容类型:text/html;字符集=\“UTF-8”
放入“内容编码:gzip”
放
#生成一些html输出
output=“”
输出“UTF-8”)
放置“内容类型:text/html;字符集=\“UTF-8”
放入“内容编码:gzip”
放
output=“”

输出好的,问题解决了,必须使用此代码部分:

z = Zlib::Deflate.new(9,16+Zlib::MAX_WBITS)
compressed = z.deflate(output,Zlib::FINISH)
z.close
puts compressed
#!/usr/bin/ruby
require "cgi"
require "zlib"

cgi=CGI.new(:accept_charset => "UTF-8")

puts "Content-Type: text/html; charset=\"UTF-8\"" 
puts "Content-Encoding: gzip"
puts

output=""
output << "<html><body><style> p {line-height:20%;font-size:9px;font-family:monospace} a {text-decoration:none} a[title]:hover:after {font-size:9px;font-family:monospace}</style>"
output << "<p style='text-align:center'>#{Time.now}</p>"
output << "<p>#{"-"*190}</p>"
output<<"</body></html>"

File.write("gzip.temp",output)
compressed=IO.popen("cat gzip.temp|gzip -c","r").read
puts compressed
z = Zlib::Deflate.new(9,16+Zlib::MAX_WBITS)
compressed = z.deflate(output,Zlib::FINISH)
z.close
puts compressed