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
знает обо всех числовых кодах плюс &
, <
, >
и "
. И escapeHTML
знает только о последних четырех - он не выполняет никаких числовых кодов. Я понимаю, что экранирование обычно не должно быть таким же надежным, поскольку HTML позволит буквальные версии большинства символов, кроме четырех, о которых знает CGI.escapeHTML
. Но unescaping должно быть действительно лучше.
Есть ли лучший инструмент там, по крайней мере для unescaping?