11

JavaのURLDecoderに問題があります。JavaScriptで文字列をエスケープし、Javaサーブレットに送信します。次に、エスケープされた文字列を次の行でデコードします。

URLDecoder.decode(request.getParameter("text"), "UTF-8");

これは、私が試したすべての特殊文字で正常に機能します。問題を引き起こすのは「%」だけです。文字列でこの文字を使用するたびに、次の例外が発生します。

java.lang.IllegalArgumentException: URLDecoder: Incomplete trailing escape (%) pattern
    java.net.URLDecoder.decode(URLDecoder.java:187)
    at.fhv.students.rotter.ajax.count.CountServlet.doGet(CountServlet.java:31)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

これは既知のバグですか?それとも本当に私の間違いですか?

4

4 に答える 4

10

これはバグではありません。間違ったエンコードされた文字列を送信します。%-sign は次のようにエンコードする必要があります。%25

request.getParameter() を呼び出すと、デコードされた文字列が得られると思います。

于 2012-05-14T19:55:07.547 に答える