RubyでHTMLの実体参照をエンコード/デコードするには、標準添付ライブラリcgiが利用できる。
CGI.escapeHTMLは、文字列中の&"<>を実体参照に置換してエンコードした文字列を返すメソッドだ。
require 'cgi'
string = CGI.escapeHTML('test "escaping" <characters>')
p string #=> "test "escaping" <characters>"
実体参照の文字列をデコードするにはCGI.unescapeHTMLメソッドを使用する。
require 'cgi'
string = CGI.unescapeHTML("test "unescaping" <characters>")
p string #=> "test \"unescaping\" <characters>"
なおRuby on Railsではcgiライブラリを使用しなくても良いよう、ヘルパーメソッドが用意されている。
hメソッドで実体参照にエンコードした文字列が得られる。
<%= h 'escaping <html>' %>
文字列のデコードにはrawメソッドを用いる。
<%= raw '< br >' %>
参考
