티스토리 뷰

한글이 왜 깨져서 나올까.


JSP 혹은 서블릿(Servlet) 을 이용하다보면 처음에 봉착하는 문제가.. 한글이 깨져서 나오는 것이다. 왜 한글이 깨지는 걸까. 대부분 문자인코딩이라는 아주 막연한 단어에 이게 문제야 라고 말을 할 뿐이지 어디가 문제이고 어떻게 고쳐야 하는지 알길이 없다.


html 문서의 기본 인코딩은 "ISO-8859-1" 라는 기본지식을 가지고 시작해야 한다. 저 "ISO-8859-1" 가 모길래?


ISO/IEC 8859-1

컴퓨터에서 8비트로 문자를 나타내기 위한 ISO와 IEC의 공동 표준이다. 가장 널리 쓰이며 대부분의 서유럽 언어를 지원한다. 네덜란드어(일부[* 1]), 노르웨이어, 덴마크어, 독일어, 로만슈어, 스웨덴어 스코틀랜드 게일어, 아이슬란드어, 아일랜드어, 에스파냐어, 영어, 이탈리아어, 페로어, 포르투갈어, 프랑스어(일부[* 2]), 핀란드어(일부[* 2]), 동유럽의 알바니아어, 아프라카의 스와힐리어, 아프리칸스어. 유로 기호(€)와 대문자 "?"는 개정판인 ISO 8859-15에 추가되었다. IANA의 문자 집합 ISO-8859-1에 대응하며, HTML 문서의 기본 인코딩이다.(위키참조 : http://ko.wikipedia.org/wiki/ISO/IEC_8859 )


ISO-8859-1 는 8비트를 가지고 서유럽 언어까지만 표현하니 당연히 한글이 지원이 되지 않는다. 그런 인코딩이 HTML 문서의 기본 인코딩이라니.. 좌절이 아닐 수 없다. 그러니 디폴트 셋팅만 되있는 서블릿을 가지고 놀다가는 한글을 영영 볼 수가 없다. 열심히 서블릿에서 한글로 내려줄려고 애써봐야 결국 html 문서에서는 ISO-8859-1 인코딩방식으로 해석할테니 당연히 한글이 깨질것임이 분명하기 때문이다.



UTF-8 , EUC-KR , MS949 무엇을 선택할까.


다른 인코딩을 사용해야 한다는 것을 알았으니, 어떤 인코딩을 선택할지는 각자의 몫이다. UTF-8, euc-kr, ms949 등등 많지만 위3개를 요새 자주보게 된다. euc-kr 은 어느 서적에서나 자주보며, 한글을 사용하려면 써야하는 인코딩이라고 콱 인식되어 있다. 한글전용 인코딩이라고 생각하면 되는데 영어와 한글, 그리고 약간의 한자등으로 구성되있으며 한글은 2바이트 완성형으로 구성되있다. 

utf-8 은 전세계의 모든 언어를 담을 수 있는 그릇을 가지고 있다. 요즘 웹서비스를 만들면서 한국에만 서비스하려는 사람은 거의 없을 듯 하다. 모든 가능성을 열어두려면 utf-8 이 제격이다. 하지만 단점이라면 한글은 3바이트 이상으로 늘어난다는 것이고, 아직 많은 어플리케이션 및 서버, DB 들이 euc-kr 로 운영되고 있는 시점에 갑자기 utf-8 을 적용하기란 그리 쉬운일만은 아니라는 것이다.

MS949는 MS사에서 만든 한글 확장 완성형 인코딩방식이다. euc-kr 보다는 더많은 한글을 표현가능한데, 윈도우용이라는 수식어가 붙어다닐뿐 주로쓰는 방식은 아닌거 같다. 별로 인코딩에 신경안쓰는 분들은 이클립스를 처음 설치해서 만든 모든 파일들이 MS949 인코딩으로 되어있다는 것도 모르실수도 있다. 


하지만 지금 무언가 시작하는 단계라면 주저없이 UTF-8을 선택하는 게 어떨까.



문자 인코딩에 대해서


문자인코딩 모두를 아주 자세힌 알지 못해도 기본적으로 흐름과 대강의 이해가 있으면 좋을 듯해서 간략히 정리를 해본다.


아스키코드(ASCII), ISO-8859-1 에 대하여




해결방법은?


스프링(Spring Framework) 사용하는 경우 Filter 를 이용한 인코딩 처리



반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함