2

我知道在 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">

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

如何转义单引号?

4

2 回答 2

1

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

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

String result = StringEscapeUtils.escapeJavaScript(jsString);
于 2012-07-19T07:49:11.833 回答
0

只需在每个单引号前加上反斜杠即可。像下面这样: StringEscapeUtils.escapeHtml(map[i].get("text").toString()).replace("\'","\\'")

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

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

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

于 2012-07-19T08:04:37.480 回答