为什么£在IE9中显示为A£而在FireFox中不显示?

时间:2013-03-17 15:43:39

标签: ruby-on-rails internet-explorer firefox

我最近发现在文本中插入一个£字符有问题,它在FireFox中显示为“£”,但是当我在IE9中渲染网页时,它显示为“A£”,重音超过A? / p>

我遇到问题的具体实例是:

<%= link_to "£150-£300", :controller => params[:controller], :action => params[:action], :min_price => 150, :max_price => 300 %>

这两个£符号都在IE9中以“A”为前缀。我已尝试在其他link_to命令中插入该字符,并且我得到相同的行为,因此它并不特定于此行。

我刚检查过,发现如果我在网站的任何地方将符号输入纯文本,我会遇到同样的问题。

过去有没有人遇到类似问题/知道补救措施?

提前致谢

1 个答案:

答案 0 :(得分:3)

£在Windows-1252 / ISO-8859-1中被UTF-8编码£误解释。这意味着服务器发送的物理字节以UTF-8编码,但浏览器不使用UTF-8对其进行解码。以下是使浏览器以UTF-8解释它们的提示。

您需要正确的Content-Type标头或至少在html中声明它。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

请注意,如果您的服务器使用charset发送正确的HTTP Content-Type标头,则会将其视为通过html标记。

我不知道Rails,但这应该设置真正的HTTP标头:

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

也可能是你已经将IE中的字符编码显式设置为Windows-1252,这会使IE忽略来自服务器的声明。