我encodeURIComponent
通过 AJAX 调用将值传递给服务器,但在服务器端request.getParameter()
并没有自动解码它。如何解码该值?我正在使用弹簧 MVC。
$.ajax({
type: "POST",
url: "test/editTest.do",
data: "id=" + encodeURIComponent(id)
})
任何帮助和指导将不胜感激
谢谢
我encodeURIComponent
通过 AJAX 调用将值传递给服务器,但在服务器端request.getParameter()
并没有自动解码它。如何解码该值?我正在使用弹簧 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", "+");
decodeURIComponent
这应该在 Java 端进行模拟。Java 的 URLDecoder 将加号解码为空格,从而解码替换功能。