โดยปกติแล้วเราจะเข้ารหัสหนึ่งครั้งแล้วยอมรับพารามิเตอร์โดยตรง
String para = request.getParameter(paramName); เนื่องจากคอนเทนเนอร์สามารถถอดรหัส (DECODE) ให้เราโดยอัตโนมัติ
โดยทั่วไป เมื่อเข้ารหัส จะใช้ UTF-8 (การเข้ารหัสระบบ) หากใช้ UTF-8 ในการถอดรหัสด้วย อักขระที่อ่านไม่ออกในตำนานจะไม่ปรากฏขึ้น~
อย่างไรก็ตาม หากใช้ UTF-8 ในหน้า JSP แต่ใช้การเข้ารหัสอื่นเมื่อถอดรหัสคอนเทนเนอร์ อักขระที่อ่านไม่ออกอาจปรากฏขึ้น
ในเวลานี้ โดยทั่วไปคุณสามารถใช้:
พารามิเตอร์สตริง = new String(request.getParameter(paramName).getBytes("ISO-8859-1"),"UTF-8");
ออกมาได้เช่นกัน
ฉันได้ลองทุกวิถีทางแล้ว ฉันควรทำอย่างไรหากยังคิดไม่ออก
วิธีแก้ปัญหาการเข้ารหัสนี้เกิดจากเซิร์ฟเวอร์หลายเครื่อง:
สมมติว่าสตริง: = "Yang";
เข้ารหัสหนึ่งครั้ง%E9%98%B3
เข้ารหัสสองครั้ง%2525E9%252598%2525B3
ครั้งที่สองคอนเทนเนอร์จะถอดรหัสอัตโนมัติในครั้งนี้ ไม่ว่าจะเป็น GBK, UTF-8 หรือ ISO-8859-1 ก็สามารถรับ %E9%98%B3 ได้อย่างถูกต้อง
จากนั้นตราบใดที่คุณทำการถอดรหัสหนึ่งครั้ง คุณจะได้รับ "หยาง"