在rails中两次解码HTML
我从一个XML文件中提取数据,该文件显示为双重编码的HTML,我可以使用在rails中两次解码HTML,html,ruby-on-rails,ruby,decode,Html,Ruby On Rails,Ruby,Decode,我从一个XML文件中提取数据,该文件显示为双重编码的HTML,我可以使用raw、h或String.HTML\u safe将其解码为直接的HTML。将这些方法中的任何一个加倍似乎都无法进一步解码,因此当我在视图中打印字符串时,它将呈现为编码的HTML 例如,我可能会得到以下字符串: @paragraph = <p>This is a Paragraph.</p> 当我打印时,我得到p这是一个段落。/p显示在我
raw
、h
或String.HTML\u safe
将其解码为直接的HTML。将这些方法中的任何一个加倍似乎都无法进一步解码,因此当我在视图中打印字符串时,它将呈现为编码的HTML
例如,我可能会得到以下字符串:
@paragraph = <p>This is a Paragraph.</p>
当我打印
时,我得到p这是一个段落。/p
显示在我的浏览器中。打印
呈现这是一段。
正如所料。但现在当我再次尝试解码时:
我得到了这是一段。
。无论我调用多少次raw
或其他两个方法中的任何一个,我都会继续得到编码的HTML
我想要的当然是:
这是一段。
使用CGI.escapeHTML/CGI.unescapeHTML
irb(main):043:0> CGI.escapeHTML "<p>This is a Paragraph.</p>"
=> "<p>This is a Paragraph.</p>"
irb(main):090:0> CGI.unescapeHTML "<p>This is a Paragraph.</p>"
=> "<p>This is a Paragraph.</p>"
irb(main):043:0>CGI.escapeHTML“这是一段。”
=>“p这是一个段落。/p”
irb(main):090:0>CGI.unescapethtml“p这是一个段落。/p”
=>“这是一段。”
您可能还需要了解如何使用CGI.escapeHTML/CGI.unescapeHTML删除html标记
irb(main):043:0> CGI.escapeHTML "<p>This is a Paragraph.</p>"
=> "<p>This is a Paragraph.</p>"
irb(main):090:0> CGI.unescapeHTML "<p>This is a Paragraph.</p>"
=> "<p>This is a Paragraph.</p>"
irb(main):043:0>CGI.escapeHTML“这是一段。”
=>“p这是一个段落。/p”
irb(main):090:0>CGI.unescapethtml“p这是一个段落。/p”
=>“这是一段。”
您可能还想看看如何删除html标记Ha,我假设它应该是
CGI.unescapethtml
。不过,这就成功了,谢谢!“这是一个段落。”未替换。调用CGI.unescapeHTML不会做任何事情,我假设这应该是CGI.unescapeHTML
。不过,这就成功了,谢谢!“这是一个段落。”未替换。调用CGI.unescapeHTML不会起任何作用