答案 0 :(得分:278)
要对字符进行编码,您可以使用CGI.escapeHTML
:
string = CGI.escapeHTML('test "escaping" <characters>')
要解码它们,有CGI.unescapeHTML
:
CGI.unescapeHTML("test "unescaping" <characters>")
当然,在此之前你需要包含CGI库:
require 'cgi'
如果你在Rails中,则不需要使用CGI来编码字符串。有h
方法。
<%= h 'escaping <html>' %>
答案 1 :(得分:144)
HTMLEntities可以做到:
: jmglov@laurana; sudo gem install htmlentities
Successfully installed htmlentities-4.2.4
: jmglov@laurana; irb
irb(main):001:0> require 'htmlentities'
=> []
irb(main):002:0> HTMLEntities.new.decode "¡I'm highly annoyed with character references!"
=> "¡I'm highly annoyed with character references!"
答案 2 :(得分:35)
要解码Rails中的字符:
<%= raw '<html>' %>
所以,
<%= raw '<br>' %>
会输出
<br>
答案 3 :(得分:35)
我认为Nokogiri gem也是一个不错的选择。它非常稳定,拥有庞大的贡献社区。 p>
样品:
a = Nokogiri::HTML.parse "foo bär"
a.text
=> "foo bär"
或
a = Nokogiri::HTML.parse "¡I'm highly annoyed with character references!"
a.text
=> "¡I'm highly annoyed with character references!"
答案 4 :(得分:8)
如果您不想仅为了执行此操作而添加新的依赖项(例如HTMLEntities
)并且您已经在使用Hpricot
,那么它可以为您逃脱和转移。它处理的内容远远超过CGI
:
Hpricot.uxs "foo bär"
=> "foo bär"
答案 5 :(得分:0)
您可以使用htmlascii
gem:
Htmlascii.convert string
答案 6 :(得分:-5)
<% str="<h1> Test </h1>" %>
result: < h1 > Test < /h1 >
<%= CGI.unescapeHTML(str).html_safe %>