euc-kr 이나 ksc5601 을 사용할 경우 브라우저의 한글은 잘 나온다. 대신 확장한글을 표시할 수 없어서 샾 , 햏 , 잌 같은 글자는 ? 로 깨어져 나온다. 소스보기를 해도 완전히 깨진다. MS949 를 사용하면 확장한글이 제대로 소스보기에 나오지만 브라우저의 인코딩이 한글 이 아닌 서유럽 (ISO) 로 자동지정되어서 마우스 오른버튼 메뉴의 인코딩을 통해서 한글로 재지정하는 등의 불필요한 작업이 필요할 경우가 종종 있습니다. 이런 문제의 원인은 Tomcat 의 jsp를 servlet으로 변환하는 과정에서 @page 의 contentType 속성에 지정한 charset 의 인코딩이 적용되기 때문에 euc-kr 이나 ksc5601의 경우 client 로 보내지는 소스 중의 확장한글이 깨어지며, MS949 의 경우 서버쪽에서 확장한글의 처리는 잘 하지만 브라우저에서 소스를 받을 때 header 의 Content-type 이 브라우저가 인식하는 인코딩을 벗어날 경우 Latin-1(ISO-8859-1) 로 자동지정하기 때문이다. MS949 라는 인코딩은 Cp949 라고도 표현되며 MS 운영체제에서 지원하는 통합 완성형을 지원한다. 대략 짐작을 했겠지만 이 두 가지 문제점의 해결 방법은 다음과 같다. 서버쪽 한글처리는 MS949 로 정하고, 브라우저의 한글처리는 ksc5601, euc-kr 등으로 한다. 즉 서버쪽은 @page 의 contentType 속성을 charset=MS949 로 <head> 태그 내의 <meta> 태그에서 Content-type 의 값을 charset=ksc5601 로 주면 브라우저쪽의 한글처리를 마무리지을 수 있다. 코드는 다음과 같다. <%@ page contentType="text/html;charset=MS949" %> <html> <head> <META HTTP-EQUIV="Content-type" CONTENT="text/html;charset=ksc5601"> <title>한글 인코딩</title> </head> <body> "맛있는 케잌"에서 "케잌"은 표준어가 아닙니다. 표준어는 "케이크" 입니다. </body> </html> 참고 korea.internet.com 의 HTML에서의 문자 집합 http://korea.internet.com/channel/content.asp?nid=22838&cid=187#start
2014년 4월 13일 일요일
[펌][Java]servlet 브라우저/확장한글 인코딩문제
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기