Java URL参数用空格替换%20

McQ*_*een 11 java url-encoding

在我的网页中提交表单并在文本字段中输入空格时,它在后端java代码而不是空格中被读为%20.我可以在后端将%20替换回"",但我认为这不是正确的方法,它可能发生在应用程序的任何地方.

提交表单时,有没有更好的方法在前端处理它?

Raf*_*ele 21

那没关系.这是字符在URL中转义的方式.您应该使用URLDecoder,这是特别合适的,因为尽管它的名称,它确实application/x-www-form-urlencoded解码:

String decoded = URLDecoder.decode(queryString, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

然后,您将能够构建解析URL的查询部分的键/值对的映射,拆分&并使用=以将键与值(也可以是null)分开.

但请注意,如果URL作为URI对象传递,它有一个很好的getQuery(),它已经返回未转义的文本.

如果你使用servlet API,你不必转义任何东西,因为有很好的方法,比如getParameterMap().


Kev*_*n D 11

您可以通过URLDecoder传递它,这样您不仅可以为%20排序问题,还可以对其他URLEncoded值进行排序http://docs.oracle.com/javase/7/docs/api/java/net/URLDecoder.html


小智 7

 try {
         String result = URLDecoder.decode(urlString, "UTF-8");
     } catch (UnsupportedEncodingException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
     }
Run Code Online (Sandbox Code Playgroud)