1

如果我输入密码为Admin$&%^orAdmin$&^%然后我的 ajax 调用有效,但如果我输入它这样 Admin$!%or Admin$!%^。ajax 调用引发以下异常.....

请帮助,因为我无法找到此问题的根本原因

INFO: Character decoding failed. Parameter [txt_password] with value [Admin$!%] has been ignored. No
te that the name and value quoted here may be corrupted due to the failed decoding. Use debug level
logging to see the original, non-corrupted values.
java.io.CharConversionException: EOF
        at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:80)
        at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:46)
        at org.apache.tomcat.util.http.Parameters.urlDecode(Parameters.java:410)
        at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:370)
        at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:217)
        at org.apache.catalina.connector.Request.parseParameters(Request.java:2647)
        at org.apache.catalina.connector.Request.getParameter(Request.java:1106)
        at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:355)
        at javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:158)

在探索时我发现:

Special characters are not allowed inside the query string. They must be replaced by a "%" followed by the ASCII code in Hex. E.g., "~" is replaced by "%7E", "#" by "%23" and so on. Since blank is rather common, it can be replaced by either "%20" or "+" (the "+" character must be replaced by "%2B"). This replacement process is called URL-encoding, and the result is a URL-encoded query string. 

那么这是否意味着我们不能在输入字段中使用 % 作为值?

4

2 回答 2

1

您正在尝试对已在上一步中进行 URL 解码的字符串进行 URL 解码。那是你的根本原因。

您的两组验证和无效字符串之间的区别是“&”字符。不确定为什么带有&符号的验证...可能解析器在到达“%”之前停止,因为“&”被视为分隔符。

于 2013-02-21T15:43:42.037 回答
1

终于找到解决办法了

在查询字符串中添加参数之前,我使用了 javascript 的 encodeURIComponent 函数。来自W3Schools

The encodeURI() function is used to encode a URI.
This function encodes special characters, except: , / ? : @ & = + $ # (Use encodeURIComponent() to encode these characters).

Tip: Use the decodeURI() function to decode an encoded URI.
于 2013-02-25T08:35:00.243 回答