由于某些原因,html转义在我的Rails应用程序中无效。即使我写了像
这样的东西<%=h '©äö' %>
它没有将任何字符转换为HTML实体。
我不知道可能是什么。它工作总是很好,现在突然间没有。
有什么想法吗?
答案 0 :(得分:8)
ö
和ä
是HTML中的有效字符。即使有HTML实体,也无需转义它们。这些实体是方便的,而不是必需的 - 只要声明的编码(HTTP标头)和实际的字符编码匹配,如果它们按字面意思出现就没有问题。
唯一必须转义的字符是<
,>
,&
和"
,就像XML一样。
答案 1 :(得分:2)
我会说h只替换HTML特殊字符&lt;,&gt;,&amp;并且“请查看h函数后面的Rails ERB::Util.html_escape的文档。
答案 2 :(得分:1)
Google sitemap requires fully escaped URLs,因此在这种情况下,您需要转义所有特殊和国际字符。
这htmlentities library为您做到了这一点。
我甚至在application_helper.rb
:
def html_entity_escape(s)
require 'htmlentities'
@html_coder ||= HTMLEntities.new
@html_coder.encode(s)
end