[1] 요약
인코딩 (코드페이지) | 자바의 대응 인코딩 | 문자셋 | 비고 |
---|---|---|---|
ASCII = US-ASCII | US-ASCII | (인코딩과 동일) | 기본적으로 0~127까지의 7bit 임. |
ISO 8859-1 | ISO 8859-1 | 8bit 코드. 확장(extended) ASCII 의 일종으로 분류하기도 함. | |
windows-1252 = cp-1252 | windows-1252 | 8bit 코드. 영문 윈도우에 기본적으로 사용되는 인코딩(?) | |
euc-kr | EUC-KR | ks x 1001 = ks c 5601 | 한글 2350자 |
(windows 95 이전 cp949) | x-IBM949 = Cp949 또는 x-IBM949C = Cp949C | 한글 2620자. euc-kr 에 비해 한글은 추가되었고, 특수문자, 한자의 포함여부가 약간 차이가 난다. x-IBM949C는 xIBM949와달리 0x5c이 원화표시가 아닌 역슬래시를 () 의미함. | |
windows-949 = ms-949 = cp-949 | x-windows-949 = MS949 | UHC(Unified Hangul Code) = 확장 완성형 = 통합형 한글 코드 | 한글 11172자 (ks X 1001 에 8822자 추가). IANA에 등록되어 있지 않아서 통신용으로 사용할 수 없음. |
utf-8, utf-16le, utf-16be, utf-32le, utf-32be | UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, UTF-32LE | ? | 유니코드. |
[2] 부연 설명
문자셋(Chracter Set)과 인코딩(Encoding)은 다른 개념.
유니코드 문자셋에서 ‘가’ 는 U+AC00 값으로 표현함.
그러나 이것을 데이터로 저장할때는 인코딩의 종류(utf-8, utf-16be, utf-16le, utf-32be, utf-32le) 에 따라 대응하는 값이 각각 다르다.
US-ASCII 처럼 인코딩과 문자셋이 개념상 구분없이 사용될 수도 있는 경우도 있음.
CP(Code Page)는 문자셋보다는 인코딩 개념임.
CP949는 마이크로소프트사가 만들었음.
CP949는 최초에는 일부 한글만 표현 가능하였으나 윈도우 95부터는 확장 완성형(UHC)을 지원하여 모든 현대 한글 11172자를 표현할 수 있게되었음.
일반적으로 CP949는 확장 완성형을 모두 표현할수 있는 현재의 윈도우 한글 인코딩 방식을 의미 하나, 자바에서는 CP949가 예전의 한글 2350자만을 포함하는 문자셋/인코딩을 지칭할 때 사용하는 것으로 보임. 자바는 대신 x-windows-949 를 현재의 확장 완성형을 지원하는 한글 인코딩/문자셋을 지칭할 때 사용함.
윈도우 계열 인코딩을 ANSI라고 부르기도 하나 잘못된 표현임.
SBCS, DBCS, MBCS, WBCS는 주로 윈도우에서 프로그램이 메모리상의 문자열을 다루는 것과 관련하여, 문자셋들을 구분/분류하기 위해 사용하는 용어로 보임. SBCS는 주로 ASCII 계열에 대응하고 WBCS는 16비트 유니코드 문자셋에 대응한다고 보면 될듯.
[3] 분석 및 테스트에 관하여..
참고 문서들에 나와있는 설명으로는 자바에 정의된 문자셋 간의 차이가 명확해 보이지지 않은 점들이 있었습니다.
그래서 x-IBM949C와 x-IBM949 의 차이 등을 확인하기 위하여, 인터넷에 공개된 sun java 소스코드를 직접 분석하여 판단하였음을 알려드립니다.
그리고 EUC-KR, x-IBM949, x-windows-949 의 문자셋의 범위를 확인하기 위해 유니코드를 기준으로 어떤 문자가 포함되어있고 어떤 문자는 빠져있는지 아래에 작성한 프로그램으로 테스트 해보았습니다.
첨부해드린 파일을 Winmerge 등의 툴을 사용해서 확인해보시면 명확하게 파악하실 수 있으실것 같네요.
[4] 참고
(특히 아래 세가지는 한글 인코딩/문자셋에 개념을 잡아주는데 좋은 글입니다.)
http://helloworld.naver.com/helloworld/19187
http://helloworld.naver.com/helloworld/76650
http://jinuine.blogspot.kr/2013/09/ms949.html
(아래는 정리하면서 함께 참고한 글들입니다.)
http://ko.wikipedia.org/wiki/KS_X_1001
http://ko.wikipedia.org/wiki/KS_X_1003
http://ko.wikipedia.org/wiki/EUC-KR
http://ko.wikipedia.org/wiki/%EC%BD%94%EB%93%9C_%ED%8E%98%EC%9D%B4%EC%A7%80_949
http://en.wikipedia.org/wiki/ISO/IEC_8859-1
http://en.wikipedia.org/wiki/Windows-1252
http://www.iana.org/assignments/character-sets/character-sets.xhtml
http://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html
(혹시, HTTP나, HTML, 그리고 톰켓과 관련한 사항이 궁금하시다면 아래 글을 정독해보세요. 제일 명확한 설명인듯 하더군요.)