如何在Ruby中发送原始标头

4

我有一个页面使用UTF-8字符集,但页面上的字符混乱了,我认为这只是设置一个标题“Content-Type: text/html; charset=utf-8”的问题…… 我知道如何在PHP中实现这一点,只需将以下内容放在页面顶部。

<?php header("Content-Type: text/html; charset=utf-8"); ?>

有没有一种方式可以在 Ruby 中实现这个功能?像这样在页面顶部放置一个标题?
更新:6月29日1:20 PST
不是在使用 Rails 应用程序的一部分。这是针对独立应用程序中的嵌入式浏览器页面,我可以使用 Javascript 和/或 Ruby 创建动态页面。

2
请解释一下您是如何生成网页的。您是否使用了cgi模块?它是否是Rails应用程序的一部分? - Rômulo Ceccon
抱歉,我们无法帮助您。您能否发布一段代码,以便我们查看内容是如何生成的? - Rômulo Ceccon
3个回答

2

想要使用Ruby的CGI...Ruby自带这个功能吗,还是需要下载什么东西? - Cody
它随 Ruby 一起提供,但您需要使用 require 命令加载它。 - alltom

1
如果你正在使用Rails,你需要:
response.content_type = Mime::HTML
response.charset      = "utf-8"

你也可以尝试直接设置头部:

response.headers["Content-Type"] = "text/html; charset=utf-8"

如果您正在使用Rack,您希望使用元组的第二个元素来设置标题:
class MyRackApp
  def call(env)
    response = []
    # do stuff with env, populating response
    # response is [status_code, headers, body]
    response[1]["Content-Type"] = "text/html; charset=utf-8"
    response
  end
end

如果您正在使用原始的CGI(我绝对建议使用Rack而不是cgi.rb):
header("text/html; charset=utf-8")

感谢您的三个视图。我使用了“cgi”库。(这是快速而简单的方法) - null

0

如果不了解你如何生成页面,我很难直接回答这个问题,但我建议你研究一些轻量级的非Rails Ruby Web框架。有许多这样的框架,它们可以使像这样的事情变得容易。

例如,Rack具有易于使用的哈希表,用于向浏览器发送标题。同样,在Camping中,您只需执行类似于@headers['Content-Type'] = 'text/css'的操作即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接