我要在查询字符串中添加一些参数。这些参数的值可以是“a %%”,“%”等。在java代码端。而解析查询参数我得到char conversionexception 如下例异常日志所示。
13:14:39,555 ERROR [STDERR] java.io.CharConversionException:EOF 13:14:39,555 org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:119)的错误[STDERR] 13:14:39,555 org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:87)中的错误[STDERR] 13:14:39,555 org.apache.tomcat.util.http.Parameters.processParameters(Paramete)中的错误[STDERR] rs.java:428) 13:14:39,555 org.apache.tomcat.util.http.Parameters.processParameters(Paramete)中的错误[STDERR] rs.java:515) 13:14:39,555 org.apache.tomcat.util.http.Parameters.handleQueryParameters(Para中的ERROR [STDERR] meters.java:298) :14:39,555 ERROR [STDERR] at org.apache.coyote.tomcat4.CoyoteRequest.parseRequestParameters(Co yoteRequest.java:1933)
我该怎么办?
答案 0 :(得分:5)
听起来发送到Java代码的查询字符串格式不正确。百分号在查询字符串中是特殊的:它引入了一个标识字符的两位十六进制数字。例如,%20
是一个空格。要在查询字符串中正确放置百分号,请使用%25
(字符25h是Unicode中的百分号)。如果您正在处理的查询字符串中确实存在%%
,那么它就会格式不正确,并且您希望让发送方修复它。
编辑:在您的评论中,您说您是发送无效查询字符串的人。要正确编码查询参数,请使用encodeURIComponent
JavaScript函数:
var encodedValue;
encodedValue = encodeURIComponent(yourTextfield.value);
someurl = "http://example.com?x=" + encodedValue;