q유니코드는 전 세계의 모든 글자를 하나로 표현하려는 체계이다.
qISO 10646로 정의됨
¤유니코드 1.0.0은 1991년 8월 최초제정
¤유니코드 2.0.0에 한글 11,172자가 모두 포함됨
¤최신 버전은 2012년 9월 27일 제정된 6.2
q개별적으로 정의되던 문자셋을 통합한 궁극의 문자셋
¤한글뿐 아니라 일본어와 중국어에도 컴퓨터에서 해당 언어를 표현할 수 있는 독자적인 문자 집합이 있다(KPS-9566, EUC-CN, EUC-TW, EUC-JP, Shift JIS, Big5, GB, HZ 등). 문제는 '어떻게 동시에 한국어, 중국어, 일본어를 표현하느냐'이다. 하나의 문자 집합을 사용하는 문서에서는 이를 동시에 표현할 수 없다(escape sequence를 이용하여 여러 문자 집합을 표현할 수 있으나 이는 널리 쓰이지 않았다).
이런 문제는 유럽어의 문자 집합에도 있었다. 유로화를 나타내는 '€' 기호에는 ISO 8859-15(Latin 9)의 코드 값 중 0xA4이 할당되었으나 ISO 8859-1(Latin 1)의 0xA4 코드에 할당된 문자는 '¤'다. 이 문제를 해결하기 위해 전 세계적으로 사용되는 모든 문자 집합을 하나로 모아 탄생시킨 것이 유니코드이다.
이런 문제는 유럽어의 문자 집합에도 있었다. 유로화를 나타내는 '€' 기호에는 ISO 8859-15(Latin 9)의 코드 값 중 0xA4이 할당되었으나 ISO 8859-1(Latin 1)의 0xA4 코드에 할당된 문자는 '¤'다. 이 문제를 해결하기 위해 전 세계적으로 사용되는 모든 문자 집합을 하나로 모아 탄생시킨 것이 유니코드이다.
q한글지원
¤현대 한글 11,172자 모두 지원함
¤옛 한글을 조합형 방식으로 모두 지원함
Unicode 인코딩 방식
qUnicode 인코딩 방식은 UCS-2, UCS-4, UTF-7, UTF-8, UTF-16, UTF-32등 다양하지만 가장 대표적으로 UTF-8 및 UTF-16이 많이 사용된다.
코드 범위 |
UTF-16BE 표현 |
UTF-8 표현 |
000000-00007F |
00000000 0xxxxxxx |
0xxxxxxx |
000080-0007FF |
00000xxx xxxxxxxx |
110xxxxx 10xxxxxx |
000800-00FFFF |
xxxxxxxx xxxxxxxx |
1110xxxx 10xxxxxx 10xxxxxx |
010000-10FFFF |
110110yy yyxxxxxx 110111xx xxxxxxxx |
11110zzz 10zzxxxx 10xxxxxx 10xxxxxx |
qUTF-8
¤ASCII 영역 ( ~127)은 1byte로 표현되고, 한글은 모두 3 byte로 표현된다.
¤예를 들어 ‘한’의 Unicode 값은 0xD55C, 11010101 01011100 이다
¤변환룰을 적용하면..
11101101 10010101 10011100 이 되고 이를 hex로 변환하면 0xED 95 9C 가 된다.
11101101 10010101 10011100 이 되고 이를 hex로 변환하면 0xED 95 9C 가 된다.
qUTF-16
¤BMP영역 ( ~ 0xFFFF)을 모두 2 Byte로 표현하고, 그 이상의 영역은 4 Byte로 표현된다.
¤한글 및 Ascii영역등은 Unicode 값 그대로 저장되어 2 Byte 씩으로 표현된다.
기타 용어
qBMP ( Basic multilingual plane, 기본 다국어 평면 )
¤유니코드의 첫째(0번) 평면으로, U+0000부터 U+FFFF까지의 영역을 차지한다. BMP에는 거의 모든 근대 문자와 특수 문자가 포함되어 있으며, 그 중 대부분은 한글과 한중일 통합 한자들로 이루어져 있다.
qBOM ( Byte Order Mark )
¤Encoding 된 Unicode값이 Big Endian 인지 Little Endian인지 구분하는 파일 서두에 표기되는 문자열.
¤윈도우의 메모장이나 울트라에디터에서 텍스트 편집 후 저장할 때 인코딩 Type에 따라 BOM이 붙는것을 확인 할 수 있다. 하지만 OS에 따라서는 BOM을 사용하지 않는 경우도 있다. 그래서 BOM때문에 오히려 호환성 문제가 발생하기도 한다.
Encoding |
Representation |
UTF-8 |
EF BB BF |
UTF-16 빅 엔디안 |
FE FF |
UTF-16 리틀 엔디안 |
FF FE |
UTF-32 빅 엔디안 |
00 00 FE FF |
UTF-32 리틀 엔디안 |
FF FE 00 00 |
SCSU |
0E FE FF |
UTF-EBCDIC |
DD 73 66 73 |
BOCU-1 |
FB EE 28 |
'그외 주제들 > 한글처리' 카테고리의 다른 글
Response 구간 정리 (0) | 2013.09.30 |
---|---|
Request 구간 정리 (0) | 2013.09.30 |
JSP,Servlet에서 한글 문제를 피하려면.. (0) | 2013.09.30 |
문자셋과 인코딩 (0) | 2013.09.30 |
Character-Set & Encoding이란? (0) | 2013.09.30 |