HttpServletRequest UTF-8 编码
2022-09-01 04:58:37
我想从请求中获取我的参数(带重音符号的字符),但它不起作用。我试图使用,但它也不起作用。request.setCharacterEncoding("UTF-8")
我知道这会返回正确的字符,但不起作用!URLDecoder.decode(request.getQueryString(), "UTF-8")
request.getParameterValues()
有人有想法吗?
我想从请求中获取我的参数(带重音符号的字符),但它不起作用。我试图使用,但它也不起作用。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编码。
如果您使用的是Apache Tomcat,则仅适用于请求。request.setCharacterEncoding("UTF-8")
POST
如有要求,您需要在 中添加您的 .GET
URIEncoding="UTF-8"
<Connector>
server.xml