【发布时间】:2011-11-23 18:00:47
【问题描述】:
这个:
<%= link_to "My Trademark &153;", trade_mark_path %>
生成
当我需要它时:My Trademark
在 URL 帮助程序中是否可以使用 ASCII 代码?我总是可以求助于手动生成链接,但这真的很丑。
【问题讨论】:
标签: html ruby ruby-on-rails-3 unicode
这个:
<%= link_to "My Trademark &153;", trade_mark_path %>
生成
当我需要它时:My Trademark
在 URL 帮助程序中是否可以使用 ASCII 代码?我总是可以求助于手动生成链接,但这真的很丑。
【问题讨论】:
标签: html ruby ruby-on-rails-3 unicode
正如 Phrogz 所说,理想的前进方式是在源代码中包含原始的 ™ 字符,确保将其保存为正确的编码。
如果由于平台或文本编辑器的限制而无法执行此操作,请使用字符串文字转义 \u,而不是 HTML 编码,直接获取您想要的字符:
<%= link_to "My Trademark\u2122", trade_mark_path %>
商标字符是 U+2122,或十进制 8482。153 是西欧 Windows 代码页 1252 中的字节编码,因此作为字符引用 &#153; 不应该起作用。实际上,由于不可靠的旧版浏览器行为(在 HTML5 中标准化),它在非 XML HTML 方言中确实如此,但您不应该依赖它。
【讨论】:
最简单的答案是不使用 HTML 实体,而是使用带有文字 Unicode 字符的 Unicode 源代码文件,例如实际放:
<%= link_to "My Trademark™", trade_mark_path %>
在你看来。但是,如果必须,您可以简单地这样做:
<%= link_to("My Trademark™", trade_mark_path).html_safe %>
禁用 Rails 的自动 HTML 转义。
请注意,对 ASCII 值 128-255 使用十进制实体 &#...; 是个坏主意,因为这些通常依赖于非标准代码页,除非您确定发送正确的编码为您匹配的 HTML。如you can see,商标符号的Unicode值实际上是&#8482;。
【讨论】:
&#...; 适用于 128–255,它根本不依赖于编码/代码页。 HTML/XML 字符引用明确地基于 Unicode 代码点,因此无论页面编码如何,&#163;总是£。诀窍在于,在 HTML5(但不是 XML)中,范围 128–159 被误解为代码页 1252 符号。不过,没有充分的理由使用这些代码点,所以这并不重要。
你可以使用raw方法写:
<%= link_to raw("My Trademark &153;"), trade_mark_path %>
http://apidock.com/rails/ActionView/Helpers/OutputSafetyHelper/raw
【讨论】: