【问题标题】:Unicode symbol in Rails' viewRails 视图中的 Unicode 符号
【发布时间】:2012-05-21 22:44:48
【问题描述】:

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

但是这个符号应该通过字符串传递给视图。问题就从这里开始了。

如果我这样说:

<%= 176.chr %>

进入视野,或放置

.... + 176.chr

进入 ruby​​ 源码,我明白了

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

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

【问题讨论】:

  • 非 utf-8 的东西不是你的观点,它是 176.chr,对于值 > 127,它默认为 ASCII-8BIT。单字节 176 不是有效的 utf-8 字符要么

标签: ruby-on-rails model-view-controller unicode utf-8


【解决方案1】:

您可以在 HTML 中使用此符号的特殊替换:&amp;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)。所有这些方法都应该有效。

【讨论】:

  • 如果我们谈论的是在 HTML 源代码中插入符号,您的回答是正确的。但我们正在讨论从 Ruby 字符串中获取此字符并将其放入视图的输出中。
  • &amp;deg; 类似的符号比它们的代码更容易记住、阅读和维护。将此视为建议。即使您已经解决了问题,也要使用实体而不是代码。
  • 好的,'°'.html_safe 似乎可以解决问题,但我希望将来能够插入带有任意字符码的字符。
  • 你必须把它放在 HTML 中,在 &lt;%= %&gt; 之外。或使用raw 助手。或将其标记为html_safe。顺便说一句,您是否尝试在 chr 中提供编码?就像176.chr(__ENCODING__)__ENCODING__ 不是占位符,它是 Ruby 的东西)或176.chr(Encoding::UTF_8)。所有这些方法都应该有效。
  • = myvar.to_s + 176.chr(Encoding::UTF_8) 成功了。谢谢你。 (但它有点可怕)。
【解决方案2】:

这应该已经在 application.rb/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 中编码的详细信息可以找到here

【讨论】:

  • config.encoding = "utf-8" 已经存在,# encoding: UTF-8 不起作用。
猜你喜欢
  • 2012-04-14
  • 2011-06-29
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
相关资源
最近更新 更多