15

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

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

4

3 回答 3

26

这没什么不好。这是在 URL 中转义字符的方式。你应该使用URLDecoder,这是特别合适的,因为尽管它的名字,它确实application/x-www-form-urlencoded解码:

String decoded = URLDecoder.decode(queryString, "UTF-8");

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

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

如果您使用 servlet API,则不必转义任何内容,因为有很好的方法,例如getParameterMap().

于 2013-03-05T22:39:00.970 回答
11

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

于 2013-03-05T22:35:13.380 回答
5
 try {
         String result = URLDecoder.decode(urlString, "UTF-8");
     } catch (UnsupportedEncodingException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
     }
于 2014-11-14T17:50:35.597 回答