在我的网页中提交表单时,如果在文本字段中输入了空格,则在后端java代码中将其读取为%20而不是空格。我可以在后端将%20替换回“”,但我认为这不是正确的方法,它可能发生在应用程序的任何地方。
提交表单时,有没有更好的方法在前端处理它?</ p>
答案 0 :(得分:20)
那没关系。这是字符在URL中转义的方式。您应该使用URLDecoder
,这是特别合适的,因为尽管它的名称是application/x-www-form-urlencoded
解码:
String decoded = URLDecoder.decode(queryString, "UTF-8");
然后,您将能够构建一个键/值对映射,解析URL的查询部分,在&
上拆分,并使用=
将键与值分开(也可能是null
)。
但请注意,如果URL作为URI
对象传递,则它有一个很好的getQuery()
,它已经返回了未转义的文本。
如果使用servlet API,则不必转义任何内容,因为有很好的方法,如getParameterMap()
。
答案 1 :(得分:11)
您可以通过URLDecoder传递它,这样您不仅可以为%20排序问题,还可以对其他URLEncoded值进行排序http://docs.oracle.com/javase/7/docs/api/java/net/URLDecoder.html
答案 2 :(得分:4)
try {
String result = URLDecoder.decode(urlString, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}