Generalmente codificamos una vez y luego aceptamos los parámetros directamente.
String para = request.getParameter(paramName); Esto se debe a que el contenedor puede decodificar (DECODE) automáticamente por nosotros.
En términos generales, al codificar, se usa UTF-8 (codificación del sistema). Si también se usa UTF-8 al decodificar, los caracteres confusos legendarios no aparecerán ~.
Sin embargo, si se utiliza UTF-8 en la página JSP, pero se utilizan otras codificaciones al decodificar el contenedor, pueden aparecer caracteres confusos.
En este momento, generalmente puedes usar:
Parámetro de cadena = new String(request.getParameter(paramName).getBytes("ISO-8859-1"),"UTF-8");
También puede salir.
He probado todos los medios. ¿Qué debo hacer si todavía no puedo resolverlo?
Cómo resolver este problema de codificación causado por múltiples servidores:
Supongamos cadena: = "Yang";
Codificar una vez%E9%98%B3
Codificar dos veces%2525E9%252598%2525B3
En la segunda vez, el contenedor se decodifica automáticamente esta vez, ya sea GBK, UTF-8 o ISO-8859-1, puede obtener %E9%98%B3 correctamente.
Luego, siempre que realices Decode una vez, podrás obtener "Yang".