使用JavaScript逃避单引号

时间:2012-07-19 07:39:04

标签: javascript jsp escaping

我知道在HTML中转义特殊字符。

但是,我仍然在问这个问题,因为我遇到过这种情况。

我有一个JSP,我不允许对输入进行验证。用户输入要测试的特殊字符。

输入字符串:

  

“#@ $%

当我从数据库显示时,我正在使用

<%= StringEscapeUtils.escapeHtml(map[i].get("text").toString())%>

其中“map”是Hashmap的数组。这很好。

当我需要使用

将此字符串传递给JavaScript时,问题就出现了
<input type="Button"
onclick="onEdit('<%= StringEscapeUtils.escapeHtml(map[i].get("text").toString())%>',
'<%= strShortCut%>','<%= map[i].get("uid")%>')" value="Edit">

字符串变为''#@$%'

如何逃避单一报价?

2 个答案:

答案 0 :(得分:1)

如果您要使用Java,也许您可​​以在Java中执行以下操作。

import org.apache.commons.lang.StringEscapeUtils;
...

String result = StringEscapeUtils.escapeJavaScript(jsString);

答案 1 :(得分:0)

只需在每个引号前加一个反斜杠。如下:     StringEscapeUtils.escapeHtml(地图[I]获得( “文本”)。的toString())。替换( “\ '”, “\\'”)

但问题不仅在于单引号。还有双引号(“)和反斜杠本身(\)。

使用与前面所示相同的技术。您也可以使用regular expressions,但我向您展示了最简单的方法。

要检查转义字符,请查看网址http://docs.oracle.com/javase/tutorial/java/data/characters.html