Jam*_*sen 19 html ruby escaping
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 "…"
Run Code Online (Sandbox Code Playgroud)
看来,unescapeHTML
知道所有的数字代码加&
,<
,>
,和"
.并且escapeHTML
只知道最后四个 - 它没有做任何数字代码.我知道转义通常不需要那么强大,因为HTML将允许大多数字符的文字版本,除了CGI.escapeHTML
知道的四个字符.但是,失业应该会更好.
有没有更好的工具,至少对于unescaping?
tit*_*ous 28
htmlentities gem应该可以解决这个问题:
require 'rubygems'
require 'htmlentities'
coder = HTMLEntities.new
coder.decode('…') # => "…"
coder.decode('…') # => "…"
coder.decode('¢') # => "¢"
coder.decode('¢') # => "¢"
coder.encode("…", :named) # => "…"
coder.encode("…", :decimal) # => "…"
Run Code Online (Sandbox Code Playgroud)