유니코드
각 나라별 언어를 모두 표현하기 위해 나온 코드 체계가 유니코드(unicode)다. 유니코드는 사용중인 운영체제, 프로그램, 언어에 관계없이 문자마다 고유한 코드 값을 제공하는 새로운 개념의 코드다. 언어와 상관없이 모든 문자를 16비트로 표현하므로 최대 65,536자를 표현할 수 있다.
유니코드 표준은 애플(Apple), HP, IBM, 썬(Sun), MS, 오라클(Oracle)과 같은 업계에서 채택되었으며, XML, 자바, ECMAScript, LDAP, CORBA 등의 표준에서 사용되고 있다. 영문대소문자와 숫자 코드는 유니코드 사이트(http://www.unicode.org/charts/PDF/U0000.pdf)에서 제공하는데, [그림 2-13]은 그 일부다. 각 문자 아래에 있는 값이 코드 값인데, 16진수로 나타낸 것이다.
‘W’의 유니코드는 0057이고, ‘e’의 유니코드는 0065이므로 “We”의 유니코드(2진 체계)는 다음과 같다.
그러면 유니코드로 한글을 어떻게 표현하는지 살펴보자.
한글은 AC00부터 D7A3까지 총 11,172자를 표현하는데, 이런 글자 수는 초성 19개, 중성 21개, 종성 28개를 곱한 값이다. 종성은 원래 27개지만, 종성이 없는 경우를 포함해 28개가 된 것이다.
초성 19 × 중성 21 × 종성 28 = 11,172
한글에 대한 유니코드는 유니코드 사이트(http://www.unicode.org/charts/PDF/UAC00.pdf)에서 제공하는데, [그림 2-15]는 그 일부다. ‘가’는 AC00으로 표현할 수 있다.
이 웹 페이지를 참조하면 ‘한’의 유니코드는 D55C이고 ‘글’의 유니코드는 AE00임을 알 수 있다. 결국 “한글”을 유니코드로 나타내면 다음과 같다.
이런 한글에 대한 유니코드는 임의로 정한 것이 아니라 다음과 같은 공식에 따라 구해진 것이다.
{[(초성인덱스×21)+중성인덱스]×28} + 종성인덱스 + 0xAC001)
각 인덱스를 구하기 위해서는 유니코드 사이트(http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt)를 참고해야 한다.
그러면 공식을 이용해서 유니코드를 구하는 과정을 ‘한’에 적용해서 살펴보자.
인덱스를 구하기 위한 웹 페이지를 참고하면 다음과 같이 초성 ‘ㅎ’의 값은 0x1112이고 초성 시작 값은 0x1100임을 알 수 있다.
이때 초성 인덱스는 ‘ㅎ’ 값에 초성 시작 값을 빼면 구할 수 있으며, 값은 18이 된다.
0x1112 - 0x1100 = 18
중성인 ‘ㅏ’의 값이 0x1161이고, 중성 시작 값이 0x1161이므로 중성 인덱스는 0이 된다.
1161;N # HANGUL JUNGSEONG A
0x1161 - 0x1161 = 0
그리고 종성 ‘ㄴ’의 값이 0x11AB이고, 종성 시작인 ‘ㄱ’ 값이 0x11A8인데, 종성의 경우에는 종성이 없는 경우가 시작되므로 1을 추가로 더해야 한다.
계산된 초성 인덱스 18, 중성 인덱스 0 그리고 종성 인덱스 4를 유니코드를 구하는 공식에 대입하면 0xD55C를 구할 수 있다.
{[(18×21)+0]×28} + 4 + 0xAC00 = 0xD55C
‘한’에 대한 유니코드 0xD55C를 2진수 형식으로 나타내면 다음과 같다.
1101010101011100
각주
'system' 카테고리의 다른 글
테스트 관련 용어들. (0) | 2017.01.25 |
---|---|
L2,L3,L4,L7스위치 구별 (0) | 2014.09.18 |