我知道在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">
字符串变为''#@$%'
。
如何逃避单一报价?
答案 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。