是否有比Ruby的CGI更好的HTML转义和解开工具?

CGI.escapeHTML是非常糟糕的,但是CGI.unescapeHTML完全被打了。例如:

require 'cgi'

CGI.unescapeHTML('…')
# => "…"                    # correct - an ellipsis

CGI.unescapeHTML('…')
# => "…"             # should be "…"

CGI.unescapeHTML('¢')
# => "\242"                 # correct - a cent

CGI.unescapeHTML('¢')
# => "¢"               # should be "\242"

CGI.escapeHTML("…")
# => "…"                    # should be "…"

看来,unescapeHTML知道所有的数字代码加上& amp; amp; lt; lt,& gt;和& quot。而escapeHTML只知道最后四个 – 它不会执行任何数字代码。我明白,转义通常不一定是强大的,因为HTML将允许除了CGI.escapeHTML知道的四个之外的大多数字符的文字版本。但是,应该真的会变得更好。

有没有更好的工具在那里,至少对于unescaping?

htmlentities宝石应该做的诀窍:

require 'rubygems'
require 'htmlentities'

coder = HTMLEntities.new

coder.decode('…') # => "…"
coder.decode('…') # => "…"
coder.decode('¢') # => "¢"
coder.decode('¢') # => "¢"
coder.encode("…", :named) # => "…"
coder.encode("…", :decimal) # => "…"
http://stackoverflow.com/questions/378847/is-there-a-better-html-escaping-and-unescaping-tool-than-cgi-for-ruby

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:是否有比Ruby的CGI更好的HTML转义和解开工具?