Normalmente codificamos uma vez e depois aceitamos os parâmetros diretamente
String para = request.getParameter(paramName); Isso ocorre porque o contêiner pode decodificar automaticamente (DECODE) para nós.
De modo geral, ao codificar, UTF-8 (codificação do sistema) é usado. Se UTF-8 também for usado durante a decodificação, os caracteres ilegíveis lendários não aparecerão.
No entanto, se UTF-8 for usado na página JSP, mas outras codificações forem usadas ao decodificar o contêiner, caracteres ilegíveis poderão aparecer.
Neste momento, geralmente você pode usar:
String param = new String(request.getParameter(paramName).getBytes("ISO-8859-1"),"UTF-8");
Também pode sair.
Eu tentei todos os meios. O que devo fazer se ainda não consigo descobrir?
Como resolver este problema de codificação causado por vários servidores:
Suponha string: = "Yang";
Codifique uma vez%E9%98%B3
Codifique duas vezes%2525E9%252598%2525B3
Na segunda vez, o contêiner decodifica automaticamente desta vez, seja GBK, UTF-8 ou ISO-8859-1, ele pode obter %E9%98%B3 corretamente.
Então, contanto que você execute Decode uma vez, você poderá obter "Yang"