如何避免 Java request.getQueryString() 得到转义字符串
How to avoid Java request.getQueryString() get escaped string
我有一个从 JSP 表单处理 QueryString
的 Servlet。
当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")
或
- String unicodeQuery = new String(query.getBytes(), StandardCharsets.UTF_8);
- String unicodeQuery = new String(query.getBytes("ISO_8859_1"), StandardCharsets.UTF_8);
- String unicodeQuery = new String(query.getBytes(Charset.defaultCharset()), StandardCharsets.UTF_8);
我有一个从 JSP 表单处理 QueryString
的 Servlet。
当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")
或
- String unicodeQuery = new String(query.getBytes(), StandardCharsets.UTF_8);
- String unicodeQuery = new String(query.getBytes("ISO_8859_1"), StandardCharsets.UTF_8);
- String unicodeQuery = new String(query.getBytes(Charset.defaultCharset()), StandardCharsets.UTF_8);