일반적으로 한 번 인코딩한 다음 매개변수를 직접 받아들입니다.
String para = request.getParameter(paramName); 이는 컨테이너가 자동으로 DECODE를 수행할 수 있기 때문입니다.
일반적으로 인코딩할 때 UTF-8(시스템 인코딩)을 사용합니다. 디코딩할 때도 UTF-8을 사용하면 전설적인 왜곡 문자가 나타나지 않습니다~
그러나 JSP 페이지에서 UTF-8을 사용하고 컨테이너를 디코딩할 때 다른 인코딩을 사용하는 경우 잘못된 문자가 나타날 수 있습니다.
현재 일반적으로 다음을 사용할 수 있습니다.
String param = 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을 올바르게 얻을 수 있습니다.
그러면 Decode를 한 번만 수행하면 "Yang"을 얻을 수 있습니다.