当%26(& sign)值时,jnes中的unescape无法正常工作

时间:2014-05-14 17:39:10

标签: javascript jsp

我的JSP中有以下代码。除了"&" 之外,UI会正确显示每个字符。

<c:out value="<script>var escapedData=unescape('${column}');
$('div').html(escapedData);</script>" escapeXml="false" />  </div>

E.g。 1)工作案例

input = ni!er@

我的escapedData变量中的值为 ni%21er%40 。现在当我把它放在div使用时 $('div').html(escapedData);然后html上的o / p按预期

E.g。 2)发行案例

input = nice&

我的escapedData变量中的值为nice%26。现在当我把它放在div使用时 $('div').html(escapedData);然后它也显示在下面

$('#test20').html('nice%26');

然而,当输出显示在JSP中时,它只会打印&#34; nice&#34; 截断 &之后的所有内容。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您似乎对unescape(val) / escape(val)所做的以及您需要它们的地方有一些误解。当您使用.html()时需要注意的事项。

HTML URI 具有一定的特殊含义。最重要的是:

HTML <>&

URI /?%&

如果您想在 HTML URI 中使用其中一个字符,则需要将其转义。

URIHTML的转义不同。

功能unescape / escape(已弃用)和decodeURI / endcodeURI适用于 URI 。但您想要的是将数据转换为 HTML 格式。

in_JS_中没有内置函数可以执行此操作,但您可以使用使用此问题的答案代码Can I escape html special chars in javascript?

但是,由于您似乎使用jQuery,因此您可以考虑使用.text代替.html,因为这会为您进行转义。

附加说明:
我很确定var escapedData=unescape('${column}');没有做任何事情。我假设${column}已经是ni!er@ / nice&

所以请检查您的源代码。如果var escapedData=unescape('${column}');看起来像var escapedData=unescape('ni!er@');,那么您应该移除unescape,否则如果${column}包含类似的内容,则无法获得预期结果%23