CGI.unescape和CGI.unescapeHTML don'Don’我什么都不做

CGI.unescape and CGI.unescapeHTML don't do anything

本文关键字:CGI 什么 Don unescape unescapeHTML don      更新时间:2023-12-07

我有一个字符串,作为对获取请求的响应

{"revision"=>"r2407", "full_version"=>"2.5 [r2407]", "full_name"=>" [r2407]", "version"=>"2.5"}

在js文件中:

$('.output').text('<%=CGI.unescape(@response.to_s)%>')

我仍然得到与&quot的和类似的字符串。我还尝试了JS unescape(),但它也没有做任何事情。怎么了?

CGI.escapeCGI.unescape用于处理URL编码的字符串。

CGI.escape('&')
# => "%26"
CGI.unescape('%26')
# => "&"

改为使用CGI::unescape_html

CGI.unescape_html('&gt;')
# => ">"
body = '{&quot;revision&quot;=&gt;&quot;r2407&quot;, &quot;full_version&quot;=&gt;&quot;2.5 [r2407]&quot;, &quot;full_name&quot;=&gt;&quot; [r2407]&quot;, &quot;version&quot;=&gt;&quot;2.5&quot;}'
CGI.unescape_html(body)
# => {"revision"=>"r2407", "full_version"=>"2.5 [r2407]", "full_name"=>" [r2407]", "version"=>"2.5"}

我认为您首先需要使用CGI.unescape_html从响应中取消捕获HTML,然后使用j:将其转义为JavaScript

$('.output').text('<%=j CGI.unescape_html(@response.to_s)%>')