0

我最近发现了在文本中插入 £ 字符的问题,它在 FireFox 中显示为“£”,但是当我在 IE9 中呈现网页时,它显示为“A£”,并带有重音符号 A?

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

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

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

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

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

提前致谢

4

1 回答 1

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">

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

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

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

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

于 2013-03-17T15:48:12.200 回答