[Tip] 브라우저/확장한글 인코딩 0 0 4,525

by 김정식 [웹 개발 관련] 한글 MS949 [2008.06.26 11:05:34]


[Tip] 브라우저 인코딩이 자동으로 한글이 안되는 경우 해결법  

무진장 헤맸습니다.
역시 웹개발시 유용한팁은 http://korea.internet.com 에 있더군요.

------------------------------------------------------------------
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

자바토피아 이창훈님 글
http://210.219.132.169/bbs?act=VIEW&bbs=docs&seq=24333&pg=0
----------------------------------------------------------
문서 중 오류나 질문은 www.okjsp.pe.kr 의 Q&A 게시판에 올려주시기 바랍니다.
본 문서의 출처는 http://okjsp.pe.kr 임을 내용 배포시 명기해주시기 바랍니다.

kenu
---------------------------------
jakarta-seoul project
jakarta 문서 한글화 사이트
http://www.apache-korea.org

---------------------------------
http://okjsp.pe.kr
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입