我想从请求中获取参数(带有重音符的字符),但是它不起作用。我尝试使用,request.setCharacterEncoding("UTF-8")但也没有用。
request.setCharacterEncoding("UTF-8")
我知道URLDecoder.decode(request.getQueryString(),"UTF-8")返回正确的字符,但request.getParameterValues()不起作用!
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编码。