如何避免Java请求.getQueryString()获取转义字符串



我有一个Servlet,它处理来自JSP表单的QueryString

当JSP将信息发送到Servlet时,它会将查询放在URL上,如下所示:

https://www.mywebsite.com/search?query=Barcelona

我以这种方式接收Servlet内部的数据:

String query = request.getQueryString();
// query will receive "Barcelona"

一切正常。当字符串包含俄语、汉语、阿拉伯语等其他编码的字符时,问题就来了。所以,如果我把URL放成这样

https://www.mywebsite.com/search?query=Медеуский

我将在查询变量中收到以下文本:

String query = request.getQueryString();
// query will receive " %D0%9C%D0%B5%D0%B4%D0%B5%D1%83%D1%81%D0%BA%D0%B8%D0%B9"

那么,我该如何避免逃避转换呢?

谢谢!

您可以使用URLDecoder.decode(request.getQueryString(), "UTF-8")

  • StringunicodeQuery=新字符串(query.getBytes((,StandardCharsets.UTF_8(
  • String unicodeQuery=新字符串(query.getBytes("ISO_8859_1"(,StandardCharsets.UTF_8(
  • String unicodeQuery=new String(query.getBytes(Charset.defaultCharset(((,StandardCharsets.UTF_8(

最新更新