Normalerweise kodieren wir einmal und übernehmen dann die Parameter direkt
String para = request.getParameter(paramName); Dies liegt daran, dass der Container automatisch für uns dekodieren (DECODE) kann
Im Allgemeinen wird beim Codieren UTF-8 (Systemcodierung) verwendet. Wenn beim Decodieren auch UTF-8 verwendet wird, werden die legendären verstümmelten Zeichen nicht angezeigt
Wenn jedoch UTF-8 in der JSP-Seite verwendet wird, beim Dekodieren des Containers jedoch andere Kodierungen verwendet werden, können verstümmelte Zeichen erscheinen.
Derzeit können Sie im Allgemeinen Folgendes verwenden:
String param = new String(request.getParameter(paramName).getBytes("ISO-8859-1"),"UTF-8");
Kann auch rauskommen.
Ich habe alle Mittel ausprobiert. Was soll ich tun, wenn ich es immer noch nicht herausbekomme?
So lösen Sie dieses durch mehrere Server verursachte Codierungsproblem:
Angenommen, string: = "Yang";
Einmal kodieren%E9%98%B3
Zweimal kodieren%2525E9%252598%2525B3
Beim zweiten Mal dekodiert der Container dieses Mal automatisch, egal ob GBK, UTF-8 oder ISO-8859-1, er kann %E9%98%B3 korrekt abrufen.
Solange Sie dann die Dekodierung einmal durchführen, können Sie „Yang“ erhalten.