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 に答える