HttpServletRequest UTF-8编码

我想从请求中获取参数(带有重音符的字符),但是它不起作用。我尝试使用,request.setCharacterEncoding("UTF-8")但也没有用。

我知道URLDecoder.decode(request.getQueryString(),"UTF-8")返回正确的字符,但request.getParameterValues()不起作用!

有人有主意吗?

回答:

Paul的建议似乎是最好的做法,但如果要解决此问题,则根本不需要URLEncoder或URLDecoder:

String item = request.getParameter("param");

byte[] bytes = item.getBytes(StandardCharsets.ISO_8859_1);

item = new String(bytes, StandardCharsets.UTF_8);

// Java 6:

// byte[] bytes = item.getBytes("ISO-8859-1");

// item = new String(bytes, "UTF-8");

由于获得了很多选票,我想强调BalusC的观点,即这绝对不是解决方案。充其量是一种解决方法。人们不应该这样做。

我不知道是什么引起了最初的问题,但是我怀疑URL已经被UTF-8编码,然后又被UTF-8编码。

以上是 HttpServletRequest UTF-8编码 的全部内容, 来源链接: utcz.com/qa/397742.html

回到顶部