[프로그램] 유니코드에서의 한글
[출처 : 유니코드에서의 한글 (고구마S) |작성자 고구마]
유니코드(Unicode)는 세상에 존재하는 수많은 언어들을 표현하기 위해 제정되었어요.
아스키코드와는 달리, 글자당 2Byte를 할당하여요. 따라서 2^16개의 글자를 표현할 수 있지요!
유니코드의 일부 영역은 한글이 차지하고 있어요.
이 영역은 크게 아래와 같이 나눌 수 있어요.
1. 옛 한글 자모 240자
2. 현 한글 자모 94자
3. 완성된 한글 11,172자
여기서 '완성된 한글'이란, 한글 자모를 이용해 구현될 수 있는 모든 글자를 뜻해요.
또한 이 완성된 한글은 일정한 규칙 하에 배열되어 있어요.
그래서 유니코드로 표현된 한글 한 글자를 자모로 분해하거나, 다시 자모를 완성된 한 글자로 만들 수 있지요.
이러한 작업에는 아래 공식이 사용되어요.
유니코드 = 44032 + (초성 * 21 + 중성) * 28 + 종성
'초성', '중성', '종성'은 위에서 언급했던 [현 한글 자모 94자]에 속하는 녀석들이에요.
초성 = "ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ"
중성 = "ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ"
종성 = " ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ" //공백 포함
각각의 첫글자의 값을 0으로 놓고, 그 뒤로 1씩 늘려가며 값을 부여하여요.
예를 들어, 초성의 ㄴ은 값이 2이고- 종성의 ㄴ은 값이 4인 것이지요!
한 번 공식에 대입하여 볼까요?
'공'이라는 글자를 예로들게요.
공은 초성 'ㄱ', 중성 'ㅗ', 종성 'ㅇ'으로 이루어진 글자에요.
유니코드 = 44032 + (0 * 21 + 8) * 28 + 21
= 44032 + 324 + 21
= 44377
'공'의 유니코드 값은 44377이군요!
이번에는 반대로, 글자로부터 그것의 초성, 중성, 종성 각각의 유니코드 값을 얻는 방법을 알아보아요.
이것 역시 간단해요. 위의 공식을 변형하여 사용하면 되어요.
초성 = (유니코드 - 44032) / (21 * 28)
중성 = (유니코드 - 44032) % (21 * 28) / 28
종성 = ((유니코드 - 44032) % (21 * 28)) % 28
유니코드의 이러한 공식은 아주 많은 용도로 사용될 수 있어요.
듣기로는, 유니코드 체계가 아니어서 한글 채팅을 할 수 없는 게임들에서-
이러한 방식으로 내용을 분해/조합하여 한글 채팅을 구현한다고 해요.
'윈도우' 카테고리의 다른 글
[윈도우] 윈도우 7에서 리눅스 삼바 접속 되지 않을때 (0) | 2011.08.04 |
---|---|
HTTP 프로토콜 정리 (0) | 2008.10.24 |
Internet Explorer 버전 정보 (0) | 2008.08.27 |