2

我试图在我的 Rails 视图中包含一个度数符号。如果我将度数符号(°)直接放入 .html.erb 文件中,浏览器会以正常方式显示它。

但是这个符号应该通过字符串转移到视图中。问题就从这里开始了。

如果我把这个:

<%= 176.chr %>

进入视野,或将

.... + 176.chr

进入红宝石源,我得到

incompatible character encodings: UTF-8 and ASCII-8BIT

如何让 Rails 默认将所有视图识别为 UTF-8?

4

2 回答 2

3

您可以在 HTML 中对此符号使用特殊替换:&deg;

http://www.w3schools.com/charsets/ref_html_entities_4.asp

你必须把它放在 HTML 中,在 <%= %> 之外。或使用原始助手。或者将其标记为 html_safe。顺便说一句,您是否尝试在您的 chr 中提供编码?就像176.chr(__ENCODING__)__ENCODING__这里不是占位符,它是 Ruby 的东西)或 176.chr(Encoding::UTF_8)。所有这些方法都应该有效。

于 2012-05-14T13:00:27.180 回答
2

这应该已经在您的application.rbinside中指定了/config/

相关部分应如下所示:

module App
  class Application < Rails::Application
    # Configure the default encoding used in templates for Ruby 1.9.                                                                                                                                     
    config.encoding = "utf-8"    
  end
end

我认为这里的问题是您正在生成一个应该插入 UTF-8 正文的 ASCII-8BIT 字符。

如果你想在你的 Ruby 代码中使用 UTF-8 字符串,你必须把这个神奇的字符串放到你的 ruby​​ 文件的第一行:

# encoding: UTF-8

可以在此处找到有关 Ruby 1.9 中编码的详细信息

于 2012-05-14T12:53:44.360 回答