Java

[JAVA/JSP] 한글깨짐 [펌]

SojuMan 2011. 5. 17. 16:45


아래 소스를 응용하면 한글 깨짐 현상을 없앨 수 있다.
String test="김태정 온 보이스보탈";

test=new String(test.getBytes("8859_1"), "EUC-KR");

System.out.println("test : " + test);

김태정 온 보이스 보탈


<추가 내용>
jsp를 계속 공부하다보니까 계속적으로 한글 문제가 발생된다..
그래서 왜 유니코드를 사용한다는 java에서 이런문제가 발생되는지 궁금하였다...
그런데 이게 한글을 웹으로 전송할 때 발생되는 문제라는 것을 알게 되었다.

http://cafe.naver.com/jokerx04.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=255

위 내용을 간단히 정리를 하면은

한글 웹브라우저에서는 KSC5601코드를 기본으로 사용하는데 웹으로 전송(HTTP REQUEST)할 때는 x-www-form-urlencoded 형식으로 인코딩 된다고 한다. 그런데 서블릿은 전송된 문자들이 ISO-8859-1 표준 코드라고 생각한다. 그리고 JAVA에서는 유니코드를 사용하므로 전달된 한글코드를 ISO-8859-1로 인코딩을 한다고 한다. 그래서 웹으로 한글을 전송하게 되면은 무조건 깨진다고 봐야한다.
그래서 우리도 ISO-8859-1 형식의 유니코드로 인코딩된(깨진 상태다)놈을 다시 ISO-8859-1의 바이트 배열로 추출한다. 그 다음에 그놈을 다시 원래의 포맷인 KSC5601 형식으로 변환 해주면 된다. 또 서블릿에서 웹으로 보낼 때도 한글을 ISO-8859-1 형식으로 변환한다. 그래서 이것은 KSC5601 을 사용하는 euc-kr 로 변환해서 전송해야 한다.
이것은 JSP 페이지나 서블릿에 contentType 의 charset 을 "euc-kr" 로 설정해 주기만 하면 된다.

euc-kr 은 한글은 KSC5601 로 표현하고, 영어는 JSC5636을 사용하는 방법인데, 벨 연구소에서 제안한 유닉스 상에서 영어 외의 문자를 표현하는 방법 중에 하나이다. euc-kr 은 Extended UNIX Korea Code 의 약자이다.