使用 java 解码 EncodeURIComponet

Decode EncodeURIComponet using java

我正在通过 AJAX 调用使用 encodeURIComponent 将值传递给服务器,但在服务器端 request.getParameter() 不会自动对其进行解码。我怎样才能解码这个值?我正在使用 spring MVC。

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

如有任何帮助和指导,我们将不胜感激

谢谢

在您的 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,你应该为你的服务器找一个等效的

你能在 Java 中尝试以下操作吗:

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

这应该在 Java 端模拟 decodeURIComponent。 Java 的 URLDecoder 将加号解码为 space,从而实现替换功能。