【问题标题】:Is there a way to use ASCII chracter codes in rails link helpers?有没有办法在 rails 链接助手中使用 ASCII 字符代码?
【发布时间】:2011-11-23 18:00:47
【问题描述】:

这个:

<%= link_to "My Trademark &153;", trade_mark_path %>

生成

"My Trademark &153;"

当我需要它时:My Trademark™

在 URL 帮助程序中是否可以使用 ASCII 代码?我总是可以求助于手动生成链接,但这真的很丑。

【问题讨论】:

    标签: html ruby ruby-on-rails-3 unicode


    【解决方案1】:

    正如 Phrogz 所说,理想的前进方式是在源代码中包含原始的 字符,确保将其保存为正确的编码。

    如果由于平台或文本编辑器的限制而无法执行此操作,请使用字符串文字转义 \u,而不是 HTML 编码,直接获取您想要的字符:

    <%= link_to "My Trademark\u2122", trade_mark_path %>
    

    商标字符是 U+2122,或十进制 8482。153 是西欧 Windows 代码页 1252 中的字节编码,因此作为字符引用 &amp;#153; 不应该起作用。实际上,由于不可靠的旧版浏览器行为(在 HTML5 中标准化),它在非 XML HTML 方言中确实如此,但您不应该依赖它。

    【讨论】:

      【解决方案2】:

      最简单的答案是不使用 HTML 实体,而是使用带有文字 Unicode 字符的 Unicode 源代码文件,例如实际放:

      <%= link_to "My Trademark™", trade_mark_path %>
      

      在你看来。但是,如果必须,您可以简单地这样做:

      <%= link_to("My Trademark&trade;", trade_mark_path).html_safe %>
      

      禁用 Rails 的自动 HTML 转义。

      请注意,对 ASCII 值 128-255 使用十进制实体 &amp;#...; 是个坏主意,因为这些通常依赖于非标准代码页,除非您确定发送正确的编码为您匹配的 HTML。如you can see,商标符号的Unicode值实际上是&amp;#8482;

      【讨论】:

      • &amp;#...; 适用于 128–255,它根本不依赖于编码/代码页。 HTML/XML 字符引用明确地基于 Unicode 代码点,因此无论页面编码如何,&amp;#163;总是£。诀窍在于,在 HTML5(但不是 XML)中,范围 128–159 被误解为代码页 1252 符号。不过,没有充分的理由使用这些代码点,所以这并不重要。
      【解决方案3】:

      你可以使用raw方法写:

      &lt;%= link_to raw("My Trademark &amp;153;"), trade_mark_path %&gt;

      http://apidock.com/rails/ActionView/Helpers/OutputSafetyHelper/raw

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-14
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-26
        相关资源
        最近更新 更多