获取查询参数中"%"值的charconversion异常?

Mad*_*hik 1 java parameters parsing exception

我将在查询字符串中添加一些参数.这些参数的值可以是"a %%","%"等.在java代码端.而解析查询参数即可获得char conversionexception,如下所示在异常日志中.

13:14:39,555 ERROR [STDERR] java.io.CharConversionException:EOF 13:14:39,555 ERROR [STDERR] at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:119)13:14: 39,555 ERROR [STDERR] at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:87)13:14:39,555 ERROR [STDERR] at org.apache.tomcat.util.http.Parameters.processParameters(参考文献rs.java:428)13:14:39,555 ERROR [STDERR] at org.apache.tomcat.util.http.Parameters.processParameters(Paramete rs.java:515)13:14:39,555 ERROR [STDERR] at org. apache.tomcat.util.http.Parameters.handleQueryParameters(Para meters.java:298):14:39,555 ERROR [STDERR] at org.apache.coyote.tomcat4.CoyoteRequest.parseRequestParameters(Co yoteRequest.java:1933)

我该怎么办?

T.J*_*der 5

听起来像发送到Java代码的查询字符串格式不正确.百分号在查询字符串中是特殊的:它引入了一个标识字符的两位十六进制数字.例如,%20是一个空间.要在查询字符串中正确放置百分号,请使用%25(字符25h是Unicode中的百分号).如果您正在处理的查询字符串确实存在%%,那么它就是格式错误,并且您希望让发送方修复它.

编辑:在您的评论中,您说您是发送无效查询字符串的人.要正确编码查询参数,请使用encodeURIComponentJavaScript函数:

var encodedValue;
encodedValue = encodeURIComponent(yourTextfield.value);
someurl = "http://example.com?x=" + encodedValue;
Run Code Online (Sandbox Code Playgroud)