使用 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,从而实现替换功能。
我正在通过 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,从而实现替换功能。