2

encodeURIComponent通过 AJAX 调用将值传递给服务器,但在服务器端request.getParameter()并没有自动解码它。如何解码该值?我正在使用弹簧 MVC。

$.ajax({  
    type: "POST",
    url: "test/editTest.do",
    data: "id=" + encodeURIComponent(id)
})

任何帮助和指导将不胜感激

谢谢

4

2 回答 2

0

在 web.xml 中添加一个字符集过滤器作为第一个过滤器

<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

此外,您可以确保您的服务器配置正确,例如为 tomcat 添加 URIEncoding 到连接器

<connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>

将指定用于解码 URI 的字符编码。如果你不使用 tomcat,你应该为你的服务器找到一个等价物

于 2015-01-29T11:15:06.730 回答
0

您可以在 Java 中尝试以下操作:

URLDecoder.decode(request.getParameter("id").replace("+", "%2B"), "UTF-8").replace("%2B", "+");

decodeURIComponent这应该在 Java 端进行模拟。Java 的 URLDecoder 将加号解码为空格,从而解码替换功能。

于 2015-01-29T11:55:44.507 回答