由于某种原因,html 转义在我的 Rails 应用程序中不起作用。即使我写了类似的东西
<%=h '©äö' %>
它不会将任何字符转换为 HTML 实体。
我不知道可能是什么。它一直很好,现在突然不行了。
有任何想法吗?
由于某种原因,html 转义在我的 Rails 应用程序中不起作用。即使我写了类似的东西
<%=h '©äö' %>
它不会将任何字符转换为 HTML 实体。
我不知道可能是什么。它一直很好,现在突然不行了。
有任何想法吗?
ö
并且ä
是 HTML 中的有效字符。没有必要对它们进行转义,即使它们有 HTML 实体。这些实体是方便的,不是必需的——只要声明的编码(HTTP 标头)和实际的字符编码匹配,如果它们按字面意思出现就没有问题。
唯一必须始终转义的字符是<
,和>
,就像在 XML 中一样。&
"
我会说 h 仅替换 HTML 特殊字符 <、>、& 和“。请查看位于 h 函数后面的Rails ERB::Util.html_escape的文档。
Google 站点地图需要完全转义的 URL,因此在这种情况下,您需要转义所有特殊字符和国际字符。
这个htmlentities库为您完成了这项工作。
我什至写了一个小包装application_helper.rb
:
def html_entity_escape(s)
require 'htmlentities'
@html_coder ||= HTMLEntities.new
@html_coder.encode(s)
end