代码之家  ›  专栏  ›  技术社区  ›  user3132347

使用java解码EncodeURIComponet

  •  2
  • user3132347  · 技术社区  · 11 年前

    我正在使用向服务器传递值 encodeURIComponent 通过AJAX调用,但在服务器端 request.getParameter() 不是自动解码。如何解码值?我正在使用springMVC。

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

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

    谢谢

    2 回复  |  直到 11 年前
        1
  •  0
  •   Master Slave    11 年前

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

        2
  •  0
  •   ArinCool    11 年前

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

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

    这应该模拟 decodeURIComponent 在Java端。Java的URLDecoder将加号解码为空格,从而生成替换函数。