2010. 4. 3. 10:41

윈도우 톰켓 4.1.30

request로 받지 않을때

필터 적용의 경우
<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하지 않으면 한글깨짐 (°¡³ª´Uabc °¡³ª´U¼?≫b)

필터적용하지 않는경우
필터 적용하든 안하든 상단에 정의하지 않으면 전부 위와같이 깨짐

결론 :
톰켓 4.1.30의 경우 필터적용 유무와 관계없이 페이지 상단에 무조건 케릭셋 지정해야한다

폼태그를 통해 넘겨서 request로 받을경우
적용 문자 : "한글 abc" 라는 문자열 전송

 

필터 적용의 경우


get방식의 경우
<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하지 않으면 한글깨짐(?? abc)
getBytes로 처리하든지 않하든지 무조건 깨짐(?? abc)

<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하면
getBytes처리 하지않으면 정상출력
getBytes처리하면 깨짐 (?? abc)

post방식의 경우
<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하지 않으면 한글깨짐(?? abc)
getBytes로 처리하든지 않하든지 무조건 깨짐(?? abc)

<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하면
getBytes처리 하지않으면 정상출력
getBytes처리하면 깨짐 (?? abc)

*getBytes 처리방식 : String inputStr = new String(request.getParameter("param").getBytes("8859_1"), "MS949");

결론 :
필터적용의 경우 get방식이건 post방식이건 결과값은 같다 .
페이지 상단에 케릭셋 적용하지 않으면 무조건 깨지므로 일단 무조건 케릭셋은 MS949로 지정한다.
request로 받은 값은 getBytes처리하지 않는다.. 즉 필터에서 처리를 해주기때문에 처리하게되면 이중처리로 한글이 깨지게된다.
고로 필터 적용해야함 ㅡㅡ

 

필터 적용하지 않는경우
<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하지 않으면 한글깨짐
getBytes처리 하지않을때 현상 (CN±Uabc)
getBytes처리할때 현상(??abc)

<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하면
getBytes처리 하지않으면 한글깨짐 (??±?abc)
getBytes처리하면 정상출력

*getBytes 처리방식 : String inputStr = new String(request.getParameter("param").getBytes("8859_1"), "MS949");

결론 :
필터를 적용하지 않는경우는(톰켓 버전이낮은경우 필터가 안먹는경우가 있을때)
일단 상단에 무조건 케릭셋을 적용한다음..
request로 받은값은 무조건 getBytes처리나 request.setCharacterEncoding("MS949");의 처리를 해주어야한다.

윈도우 톰켓 5.0.27

request로 받지 않을때


필터 적용의 경우
<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하지 않아도 정상출력

필터적용하지 않는경우
필터 적용하든 안하든 무조건 정상출력됨

결론 :
톰켓 5.0.27의 경우 필터적용 유무와 관계없이 무조건 정상출력 된다
.

폼태그를 통해 넘겨서 request로 받을경우
적용 문자 : "한글 abc" 라는 문자열 전송

 

필터 적용의 경우

get방식의 경우
<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하지 않는경우
getBytes처리 하지않을때 정상출력
getBytes처리할때 한글깨짐(??abc)


<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하면
getBytes처리 하지않으면 정상출력
getBytes처리하면 깨짐 (?? abc)

post방식의 경우

<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하지 않는경우
getBytes처리 하지않을때 한글깨짐 (??abc)
getBytes처리할때 한글깨짐(??abc)

<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하면
getBytes처리 하지않을때 정상출력
getBytes처리할때 한글깨짐(??abc)


*getBytes 처리방식 : String inputStr = new String(request.getParameter("param").getBytes("8859_1"), "MS949");

 

필터 적용하지 않는경우

get방식의 경우
<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하지 않는경우
getBytes처리 하지않을때 정상출력
getBytes처리할때 한글깨짐(??abc)

<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하면
getBytes처리 하지않으면 한글깨짐 (??±?abc)
getBytes처리하면 정상출력

post방식의 경우

<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하지 않는경우
getBytes처리 하지않을때 한글깨짐 (??abc)
getBytes처리할때 한글깨짐(??abc)

<%@ page language="java" contentType="text/html;charset=MS949" %>를 적용하면
getBytes처리 하지않을때 정상출력
getBytes처리할때 한글깨짐(??abc)

*getBytes 처리방식 : String inputStr = new String(request.getParameter("param").getBytes("8859_1"), "MS949");

결론 :
필터를 적용하건 안하건 변화가 없다.
즉 톰켓5.0.27버전의 자체에서 필터처리를 해서 전체적인 케릭터셋을 정의해준다고 봐야할거 같다.
하지만 get방식과 post방식에따라 한글처리가 차이가 있다.
톰켓 5.0.27에서는 get방식으로 전송시 getBytes처리를 해주어야하고 post방식처리시에는 getBytes를 처리하면 안된다.

결론적으로 톰켓 5.0.27버전에서는 필터를 처리할필요가 없고 get방식의경우 getBytes처리를 해주어야하고 post방식처리시에는 getBytes를 처리하면 안된다.

Posted by 굿데이