홍윤표의 한글 이야기
한글 코드란 무엇일까요?
'코드가 맞는다'는 말이 이제는 낯설지 않은 관용어가 되었습니다. 서로 의사소통이 가능하다는 이야기지요. 국립국어원에서 간행한 2003년도 <신어 자료집>에 이 관용어가 등재되어 있는데, '뜻이 통하거나 맞다'로 풀이되어 있습니다. '코드'가 무엇이기에 이것이 맞으면 의사소통이 원활할까요?
코드
국립국어원의 <표준국어대사전>에는 '코드'란 단어를 다음 세 가지의 뜻으로 풀이하고 있습니다.
① 어떤 사회나 계급, 직업 따위에서의 규약이나 관례
② 상사商社가 국제 전보에서 정하여 두고 쓰는 약호나 기호
③ 정보를 나타내기 위한 기호 체계, 데이터 코드, 기능 코드, 오류를 검사하기 위한 검사코드 따위가 있다.
그런데 위의 ①, ②, ③ 중에서 오늘날 흔히 말하는 '코드'는 ③에 해당하는 것이고, '코드가 맞는다'의 '코드'도 주로 ③의 뜻일 것입니다. 이 '코드'를 좀 더 쉽게 이해하기 위해서는 사람들이 의사를 전달하는 방식부터 이야기하는 것이 좋을 것 같습니다.
사람들이 자신의 의사를 전달하는 가장 기본적인 방식은 '말'을 이용하는 것입니다. '말'을 사용하기 위해서는 말하는 사람과 듣는 사람 사이에 일정한 약속이 있어야 합니다. 말하는 사람이 [책]이라는 소리로 말을 하면 [책]이란 소리를 들은 사람이 '책'冊이란 뜻으로 받아들이도록 약속이 되어 있어야 '말'이 통하기 때문입니다. 만약 집단이 달라지면 말도 달라집니다.
집단끼리의 약속은 아주 자의적恣意的인 것입니다. '책'이란 뜻을 가진 말을 [bʊk]영어, [liːvʀ]프랑스어, [ˈknʲiɡə]러시아어, [cè]중국어, [hoɴ]일본어 등으로 말하는 것을 보면, '책'이란 의미와 그것을 가리키는 소리가 필연적 관계가 없음을 알 수 있습니다. 이렇게 뜻하고자 하는 의미와 그것을 나타내는 소리와의 관계가 자의적인 것들 중에서, 특히 말을 이용하는 것을 '기호sign'라고 합니다.
그러나 어떤 뜻을 나타내기 위해서 말 대신에 소리나 몸짓, 손짓 또는 색깔 등을 이용하는 방법도 있습니다. 기호 대신에 그것을 다른 부호로 바꾸어 표시하는 것인데 교통 신호등이 대표적입니다. 그것을 '신호signal'라고 합니다. 또한 말이나 문자를 또 다른 기호로 바꾸기도 합니다. 예컨대 [가]라고 하는 문자를 [1011000010100001]식으로 표시하는 방식인데, 이것을 '부호'라고 합니다. '모스 부호'나 컴퓨터의 '부호 체계'라고 할 때의 '부호'가 그것입니다.
이처럼 의사 전달은 기호로 하는 방법, 신호로 하는 방법, 부호로 하는 방법 등이 있습니다. 그중에서 의사 전달을 가장 정확하고 빠르게 하는 방법이 컴퓨터를 이용하는 것인데, 컴퓨터는 '코드'를 전달하는 방식을 사용하고 있습니다.
컴퓨터에서 말하는 코드는 대체로 문자 코드입니다. 문자 코드란 문자를 '다른 기호'로 바꾼 것인데 이 '다른 기호'가 곧 숫자입니다. [a]라는 소리를 'ㅏ'라는 문자로 표시한 것처럼 소리를 기호로 적어 놓은 것이지요.
그러나 컴퓨터에서는 이 문자들을 숫자로 나타냅니다. 그런데 컴퓨터에 쓰는 숫자는 우리가 쓰는 숫자와는 다릅니다. 우리가 일반적으로 사용하는 숫자 체계는 '0, 1, 2, 3, 4, 5, 6, 7, 8, 9'의 10개로 표시되는 10진법의 10진수입니다. 숫자는 모두 이 10개 숫자의 조합에 의해 표시됩니다. 12는 1과 2, 123은 1과 2와 3이 조합이 된 것입니다.
하지만 컴퓨터는 0과 1만을 이용하는 2진수의 체계를 사용합니다. 컴퓨터에서 자료를 기억시키기 위한 회로를 구성하는 최소의 요소는 두 가지 상태, 즉 꺼진 상태와 열린 상태off/on입니다. 이 꺼진 상태와 켜진 상태를 각각 숫자 0과 1에 대응시킬 수 있는데, 이렇게 0과 1의 두 숫자만으로 이루어진 숫자 체계를 2진수 체계라고 합니다.
컴퓨터는 2진수 형태만을 사용하기 때문에 인간이 사용하는 언어 자체를 정보로 사용할 수가 없습니다. 인간의 언어를 컴퓨터가 사용할 수 있도록 하기 위해서는 인간의 언어를 표기한 문자를 컴퓨터 내부에서 그 문자에 대응되는 2진수로 변환해야 합니다. 이러한 문자와 2진수의 대응 관계를 문자 코드라고 합니다.
0과 1이라는 숫자를 배열하여 서로 대립될 수 있는 요소를 만들어 내는 한 자릿수는 0과 1, 두 개밖에 없지요. 하지만 두 자릿수로 조합한다면 00, 01, 10, 11의 네 개가 될 것이고, 세 자릿수로 조합한다면 000, 001, 010, 011, 100, 101, 110, 111의 8 개가 될 것입니다. 표기하고자 하는 문자가 적으면 이에 대립되는 2진수의 체계도 간단하지만, 문자가 많으면 그것을 표현하기 위한 2진수의 체계도 복잡해집니다.
그러니까 0과 1이 조합되는 자릿수가 확대되는 것입니다. 앞에서 보았듯이 0과 1이 한 자릿수의 단위로 조합한다면 2개, 두 자릿수면 4개, 세 자릿수면 8개, 네 자릿수면 16개, 다섯 자릿수면 32개가 됩니다. 이렇게 2진수의 자릿수를 8개로 한 컴퓨터를 우리는 8비트 컴퓨터라고 합니다.
코드와 비트, 바이트
0과 1을 나타내는 기본 단위를 2진수 체계에서는 바이너리 디짓binary digit이라고 하고 이것을 줄여서 비트bit라고 합니다. 비트는 컴퓨터의 주 기억 장치에 자료를 기억시키는 정보 전달의 가장 기본적인 단위입니다. 그러므로 '문자 코드'의 '코드'란 컴퓨터에서 특정한 자료를 표현하는 비트의 나열을 의미합니다.
비트bit와 바이트byte라는 용어는 컴퓨터의 기억 단위를 나타내는 말입니다. 비트는 기억 장치의 최소 단위로서 1 또는 0 중에 어느 하나를 나타냅니다. 컴퓨터 내부의 모든 전자 회로는 이 비트를 기본으로 하고 있습니다. 8비트, 16비트 등 여러 개의 비트로 구성되어 하나의 단위로 취급되는 비트 연쇄를 바이트라고 하지만, 일반적으로 8비트를 묶어서 1바이트라고 합니다.
컴퓨터에서는 자료가 0과 1의 조합으로 표시되기 때문에 이때 하나의 값을 비트라고 합니다. 그래서 n개의 비트를 가지고 표현할 수 있는 코드의 종류는 2n이 됩니다. 그래서 1바이트, 즉 8비트를 사용하는 문자 코드에서는 논리적으로 28, 즉 256개의 서로 다른 대립 요소들을 만들어낼 수 있습니다. 그 각각의 요소를 문자로 대응시킨 것이니까 모두 256개의 문자를 정의할 수 있는 것입니다.
그래서 8비트 컴퓨터에서는 256개의 문자 코드를 사용할 수 있으며, 16비트 컴퓨터에서는 216개를, 그리고 32비트 컴퓨터에서는 232개의 문자를 사용할 수 있습니다.
비트와 바이트를 그림으로 보이면 다음과 같습니다.
그래서 로마자 A를 '01000001', 한글 '가'를 '1011 0000 1010 0001'처럼 문자를 컴퓨터가 이해할 수 있는 2진수와 대응시킨 것을 '문자 코드'라고 하고 이를 그냥 줄여서 '코드code'라고 합니다. 로마자 A, B, C와 한글 '가, 각'의 코드를 보이면 오른쪽과 같습니다. 로마자 'A B C'는 각각 1바이트로 표시한 것이고, 한글 '가, 각'은 각각 2바이트로 표시한 것입니다.
그런데 컴퓨터를 통해 정보 생산자와 정보 수신자가 서로 정보를 주고받기 위해서는 정보 생산자가 부호화시킨 언어 정보를 수신자가 같은 부호 체계로 받아들일 수 있어야 합니다. 실제 언어 행위에서는 언어 기호의 형식과 내용이 비록 자의적이지만, 동일 언어 화자와 청자 사이에 이미 약속이 되어 있어 의사소통에 문제가 발생하지 않습니다.
컴퓨터의 정보 전달에서도 마찬가지입니다. 양자 간의 부호 체계가 같아야 정보 전달 행위가 가능합니다. 그러므로 정보 생산자와 수신자 사이의 부호 체계를 일원화 내지 표준화하지 않으면 안 됩니다. 결국 코드가 같아야 정보 전달이 가능합니다. 코드가 맞는다는 말은 이렇게 해서 생긴 말입니다.
한글 코드
한글 코드란 우리나라에서 사용되는 문자를 컴퓨터 내부에서 2진수로 표현하기 위한 대응 규칙을 말합니다. 결국 한글을 컴퓨터 내부에서 2진수로 처리하도록 정의한 문자의 집합입니다. 그런데 한글은 영어 알파벳과 달리 한글 자모를 조합하고 배열한 음절 글자를 쓰고 있는데, 한글 자모만도 그 단위를 어떻게 설정하는가에 따라 적게는 33개에서 많게는 51개로 볼 수 있고, 음절 글자만도 '가, 각, 갂, 갃, 간'에서 '힠, 힡, 힢, 힣'까지 모두 11,172자입니다. 여기에다가 옛한글까지 포함하면 그 숫자는 엄청납니다. 이러한 문자에는 다음과 같은 것들이 포함됩니다.
*
옛글자는 한자처럼 색깔만 바꾸어 주세요~ 크기를 줄이면 깨져 보이니까요~
한글: 한글 자모ㄱ, ㄴ, ㄷ 등, 한글 음절가, 각, 간 등, 한글 옛글자 자모ㅸ, ㅿ, ㆁ, ㆍ 등, 한글 옛글자 음절, , , 등, 기호 붙은 한글, , 등, 초성자가 없는 글자, 등
한자: 상용한자, 확장 한자, 이두 및 구결 문자 등
외국 문자: 영문자, 일본 문자, 러시아 문자, 몽골 문자, 산스크리트 문자 등
기호: 문장 부호, 약물, 화폐 표기, 심벌 등
이 중에서 한글 코드에 들어갈 내용은 바로 '한글'에 해당하는 내용입니다.
미국에서 가장 많이 사용되었던 영문자 코드 체계인 표준 아스키ASCII, American Standard Cord for Information Interchange, ISO-646에서는 로마자 대·소문자52자, 숫자10자, 특수 문자34자, 제어 문자32자를 합하여, 문자가 모두 128자밖에 되지 않기 때문에 초기에 개발된 8비트 컴퓨터에서도 아무 불편 없이 쓸 수 있었습니다.
그러나 현대 한글은 음절로 표현할 문자가 모두 11,172자이므로 256자까지만 표현할 수 있는 1바이트 체계로는 현대 한글을 표현할 수 없습니다. 그래서 능력 있는 개인이나 기업들이 하나둘씩 각각의 한글 처리 방법을 개발하였고, 그 결과로 다양한 한글 코드가 생겨났습니다. 이때까지만 해도 컴퓨터에서 한글을 사용한다는 것 자체가 대단한 일이었으므로 처리 방법이나 구현 원리 등은 그다지 중요한 문제가 아니었습니다.
그렇지만 정보를 공유하기 위해서는 이러한 한글 코드가 통일되어야 합니다. 하지만 한글 코드는 그 방법이 너무 다양하여서 어떤 종류의 코드를 사용하는 것이 가장 효과적인가를 결정하기가 어려워서, 표준화 또한 쉽지 않았습니다.
한글 코드의 유형
조합 원리에 따른 유형
한글 코드는 완성형 코드와 조합형 코드, 통합형 코드의 세 가지로 구분됩니다.
① 완성형 한글 코드
완성형 한글 코드란 한글 1음절에 하나의 코드값을 부여하는 방식의 코드를 말합니다. 1바이트로 처리될 수 있는 영문자와는 달리 한글음절은 글자의 특성상 2바이트 이상의 부호 체계로 구성되어야 하는데, 이를 국가 표준화한 것이 KSC 5601입니다. 국제표준화기구의 정보 교환용 부호 체계인 ISO 2022에 맞추어 1987년에 처음 제정된 이 표준은 '완성형 한글 코드'라고 불리며, 사용 빈도가 높은 한글 2,350자와 한자 4,888자 그리고 특수 문자 986자로 구성되어 있습니다. 이 체계는 제정 이후 행정 전산망 등에서 사용되었고, <윈도95> 등 개인용 컴퓨터 운영 체계의 코드로 사용될 정도로 힘을 가지게 되었습니다.
② 조합형 한글 코드
조합형 한글 코드란 한글 1음절을 초성, 중성, 종성으로 구분하여 각 자모에 독립된 코드값을 부여하는 방식의 코드입니다. 완성형 한글은 모든 한글 글자를 다 지원하지 못하며, 그 구성 방법도 한글 음절의 조합 원리에 맞지 않았습니다. 그래서 민간에서 사용되던 코드 체계를 발전시켜 '조합형 한글 코드'를 만들고 1992년에 완성형 코드와 함께 복수 표준화하였습니다.
KS C5601-1992. 조합형은 초성, 중성, 종성 글자들에 일정한 값5비트로 정해짐을 정해 두고, 여기에 한글 구분 비트를 보태어, 그 값들을 조합한 2바이트 값을 코드값으로 가집니다. 이 부호계는 일부 문서 처리기워드 프로세서에서 내부적인 정보 처리 부호계로 사용되고 있습니다.
③ 통합형 한글 코드
조합형 코드는 현대 한글의 처리에는 별 문제가 없지만, 옛한글의 자소를 조합형 코드 체계 내에 다 수용할 수 없어서 옛한글 처리에 어려움이 많았습니다. 한자 역시 충분한 영역을 확보할 수 없으므로, 이상적인 한글 부호계 혹은 학술용 부호계로 사용되기에는 부족하였습니다. 따라서 이 문제의 해결책을 찾기 위해서 국내에서도 나름대로 노력을 하였으며, 또 국제적인 표준 활동에도 참여하여 유니코드Unicode를 제정하는 데 우리 문자의 특수성을 반영하였습니다. 그 결과로 만들어진 코드 체계를 통합형이라고 합니다. 통합형이라는 것은 조합형과 완성형을 포괄하는 것입니다.
세계 각국의 모든 문자를 한 체계 안에 포섭시키기 위한 연구가 계속되어 ISO 10646-1이라는 국제 표준 부호계가 마련되었고, 우리나라에서도 1995년에 이를 국내 표준KS C 5700으로 받아들였습니다. 이후에 KS X 1005-1로 재규격화되었습니다. 이 부호계에서 한글 음절 11,172자는 완성형으로 처리되고, 한글 옛글자를 포함한 자소는 조합형으로 처리되어 거의 모든 한글 음절자를 구현할 수 있습니다.
바이트 수에 따른 유형
① 엔N바이트 한글 코드
엔바이트 코드는 한글을 풀어쓴 것과 같이 자음과 모음을 각각 1바이트씩 처리하는 형식의 코드입니다. 따라서 한글 1음절을 표현하기 위해 글자별로 2바이트부터 5바이트까지를 사용하게 됩니다. 이런 이유로 멀티바이트multi-byte 코드라고도 부릅니다. 여기에도 두 가지 방식이 있는데, 첫 번째 방식은 한글 자모를 자음 19자, 모음 14자의 33자로 보는 방식이고, 다른 하나는 자음과 받침을 합한 30자에다가 모음 21자를 더한 51자로 보는 방식입니다.
첫 번째 방식
자음: ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ
모음: ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅛ ㅜ ㅠ ㅡ ㅣ
두 번째 방식
*자음 모두 크기와 높이가 같아야 합니다. 원고에서 들쑥날쑥하게 보이는 거예요.
자음받침 포함: ㄱ ㄲ ᆪ ㄴ ᆬ ᆭ ㄷ ㄸ ㄹ ᆰ ᆱ ᆲ ᆳ ᆴ ᆵ ᄚ ㅁ ㅂ ᄡ ㅃ ㅅ ㅆ
ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ
모음: ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ
엔바이트 1음절의 한글 구성의 예는 다음과 같습니다.
음절
|
첫 번째 방식
|
두 번째 방식
|
나
|
ㄴ + ㅏ
|
2 바이트
|
ㄴ + ㅏ
|
2 바이트
|
닥
|
ㄷ + ㅏ + ㄱ
|
3 바이트
|
ㄷ + ㅏ + ㄱ
|
3 바이트
|
광
|
ㄱ + ㅗ + ㅏ + ㅇ
|
4 바이트
|
ㄱ + ㅘ + ㅇ
|
3 바이트
|
삶
|
ㅅ + ㅏ + ㄹ + ㅁ
|
4 바이트
|
ㅅ + ㅏ + ㄻ
|
3 바이트
|
괢
|
ㄱ + ㅗ + ㅐ + ㄹ + ㅁ
|
5 바이트
|
ㄱ + ㅙ + ㄻ
|
3 바이트
|
이 코드는 80년대 초반에 널리 사용되었으며 7비트 아스키 환경에서도 사용할 수 있다는 장점이 있지만, 한글 처리에는 적합하지 않아 곧바로 사라지게 됩니다. 무엇보다도 가장 문제가 되었던 점은 문자를 비교하거나 순서대로 정렬할 경우에 한글의 배열 순서와 맞지 않는다는 것이었습니다.
② 3바이트 한글 코드
3바이트 한글 코드는 한글 1음절을 초성, 중성, 종성으로 나누고 각각을 1바이트씩 배정해서 처리하는 것으로 한글 1음절을 처리하는 데 3바이트를 사용하기 때문에 이러한 이름이 붙었습니다. 그런데 이것은 2바이트 조합형 코드보다 1바이트를 더 많이 사용하기 때문에 비효율적이어서 자취를 감추게 됩니다. 3바이트 한글 코드는 다음과 같습니다.
문자 초성 + 중성 + 종성
대 ㄷ + ㅐ + 채움fill code¹
한 ㅎ + ㅏ + ㄴ
민 ㅁ + ㅣ + ㄴ
국 ㄱ + ㅜ + ㄱ
광 ㄱ + ㅘ + ㅇ
¹ '채움'은 비워 두는 것이 아니라, 비워 두는 곳에도 코드값을 배정하는 것을 의미합니다.
③ 8비트 2바이트 조합형 코드
2바이트 조합형 코드는 3바이트 한글 코드와 비슷하게 한글 1음절을 초성, 중성, 종성의 세 부분으로 쪼개어 표현하는 방식입니다. 그러나 2바이트 조합형 코드에서는 초성, 중성, 종성을 1바이트로 표현하는 것이 아니라 다음 그림에서 보는 바와 같이 각각을 5비트로 표현하고 이를 묶어서 2바이트로 만들어서 한 글자를 표현합니다.
이때 초성, 중성, 종성에 각각 5비트를 주면 2바이트 중에서 첫 번째 바이트의 최상위 비트MSB, most significant bit가 남게 되는데, 이것은 한글과 영문자를 구별하는 용도로 사용합니다. 즉 첫 번째 바이트의 최상위 비트가 1이면 한글이고 0이면 영문자입니다.
2바이트 조합형 한글 코드는 1980년대 초반 한국 아이비엠IBM 등에서 사용하기 시작하였으며, 1980년대 중반 아이비엠 컴퓨터가 널리 보급되면서 주된 코드로 자리 잡게 됩니다.
2바이트 조합형 코드는 3바이트 한글과 같이 한글 1음절의 길이가 일정하다는 특성을 가지고 있으므로 내부 처리에 매우 적합한 코드입니다. 또한 화면상에 표시할 때에도 한글과 영문자의 글자 크기가 2 : 1로 되어 있어서 화면 출력에 적합한 장점을 가지고 있어서, 1987년에 완성형 KS 코드가 출현하기 전까지 널리 사용되었습니다.
④ 8비트 2바이트 완성형 코드
8비트 2바이트 완성형 코드는 현재 세계적인 표준으로 자리 잡아 가고 있는 유니코드 규격입니다. 이 규격은 전 세계의 다국어 환경을 모두 지원할 수 있는 확장성을 가지고 있기 때문에 윈도 98에서 내부적으로 지원되기 시작하였고, ISO 10646-1 규격으로 자리 잡았으며, 윈도 2000에서부터 본격적으로 지원되기 시작하였습니다. 이 코드는 현재 한국어 정보 처리를 위해서도 가장 알맞은 코드라고 할 수 있습니다.
⑤ 유니코드 방식
1980년대에 전 세계에 컴퓨터가 널리 보급되고 또한 정보 교환이 일반화되면서 정보의 공유를 위한 문자 코드의 표준화가 절대적으로 필요하게 되었습니다. 그래서 1984년경부터 전 세계의 모든 국가에서 사용하고 있는 문자들을 하나의 단일 코드 체계로 통합하려는 움직임이 일어났습니다.
이러한 움직임은 두 갈래로 일어났는데, 하나는 국제표준화기구ISO가 추진해 온 ISO 10646의 제정의 움직임이고, 또 하나는 미국의 컴퓨터 업체, 예컨대 아이비엠, 애플, 휼렛패커드 등의 업체가 협력하여 추진한 유니코드입니다. 전자는 멀티바이트실제로는 2바이트 또는 4바이트 코드로 규격화하는 방안이고, 후자는 16비트로 구성되는 문자 공간65,536자에 전 세계의 모든 문자를 배당하려고 한 것입니다.
그러다가 1993년에 국제표준화기구에서 추진하고 있던 국제 표준화 규격인 유시에스UCS, Universal Multiple-Octet Coded Character Set로 단일화되었습니다.
유니코드는 2바이트로서 전 세계의 모든 문자를 표현할 것을 목표로 하여, 65,536자의 코드 영역을 사용하고 있습니다. 그래서 유니코드는 전 세계의 모든 언어를 표현하는 문자를 포함하고 있으며, 16비트의 길이로 효율성을 높이며, 문자 코드의 중첩을 최소화하게 되었습니다.
이 유니코드는 2바이트 코드 체계로서, 기본 다국어 문자판BMP, Basic Multilingual Plane이라고 하는 곳에 전 세계의 모든 문자를 수용하도록 하였는데, 그 기본 구성을 보면 다음과 같습니다.
영역
ZONE
|
행
ROW
|
내용
|
A-ZONE
영숫자 영역
|
00
|
ISO-646, Latin, Greek, Cyrillic, Armenian, Hebrew, Arabic, Devanagari, Symbol, Dingbat
|
30
|
CJK Symbol and Punctuation, Hiragana, Katakana
|
31
|
Bopomofo, Hangul Compatibility Jamo, CJK Miscellancous
|
32
|
Enclosed CJK Letters and Months
|
33
|
CJK Compatibility
|
4D
|
한글, 한글 보조 문자
|
I-ZONE
한자 영역
|
4E-9F
|
CJK Unified Ideographs한자 20,902자
|
O-ZONE
예약 영역
|
A0-DF
|
미래 표준용으로 예약
|
R-ZONE
제한 영역
|
E0-F8
|
Ptivate Use Area
|
F9-FA
|
CJK Compatibility IdeographsCJK 호환용 한자
|
FE
|
CJK Compatibility Forms
|
FF
|
Halfwidth and Fullwidth Form
|
이 유니코드에 한글 코드는 완성형 현대 한글 음절 글자, 조합형의 호환용 한글 자모와 한글 자모 확장 A와 확장 B가 들어 있습니다.
그 코드표를 부분적으로 보면 다음과 같습니다.
그림 1_ 완성형 현대 한글 앞부분
그림 2_ 호환용 한글 자모
그림 3_ 한글 자모 확장 A
그림 4_ 한글 자모 확장 B
한글 코드 표준화의 간략한 역사
한글 코드 문제는 이미 여러 번 표준화 과정을 거쳤습니다. 이제까지의 표준화 과정을 간단히 보면 다음 표와 같습니다.
연도
|
규격 번호
|
내용
|
1974년
|
KSC 5601-1974
|
한글 자모 51자에 코드 부여
|
1977년
|
KSC 5714-1977
|
한자 7,200자에 코드 부여
|
1982년
|
KSC 5601-1982
KSC 5619-1982
|
2바이트 조합형
완성형한글 1,316자, 한자 1,692자
|
1987년
|
KSC 5601-1987
|
완성형한글 2,350자, 한자 4,888자, ISO 2022 규격에 준함.
|
1991년
|
KSC 5601-1991
|
완성형 확장 글자한글 1,930자, 옛한글 1,673자, 한자 2,865자, KS C5601-1987을 보충하기 위하여 추가로 수집한 글자들
|
1992년
|
KSC 5601-1992
|
2바이트 조합형을 완성형 한글과 함께 복수 표준화
|
1995년
|
KSC 5700-1995
|
완성형 한글 11,172자, 조합형 자모 334자 및 23,274자의 한자당시 유니코드 표준을 국가 표준화한 것임.
|
1998년
|
최종 개정
|
신규격 번호 KS X 1001KS C 5601-1987 완성형의 신규격
|
2001년
|
최종 개정
|
신규격 번호 KS X 1001KS C 5657-1991의 신규격
|
2002년
|
최종 개정
|
KS X 1005-1KS C 5700-1995(유니코드)의 신규격
|
현재는 KSC 5601-1987과 KSC 5601-1992가 공동 표준으로 사용되고 있는 실정입니다. KSC 5700은 KS X 1005-1로 최종 개정된 것인데, ISO 10646-1로서 국제표준기구에 정식으로 등록된 한글 코드를 그대로 표준 코드로 정한 것입니다. 이 유니코드의 표를 보려면 다음 사이트를 참조하면 됩니다. 그곳에서는 전 세계의 모든 문자의 코드표를 볼 수 있습니다.
유니 코드표 보러 가기 (http://www.unicode.org/charts/ 링크)
맺음말
이제는 한글을 구현하는 방법이 무척 다양해졌습니다. 모스 기호로 나타내는 방법도 있지만, 컴퓨터에서 한글을 구현하는 방법도 있습니다. 컴퓨터에서 사용하는 한글 코드란 어찌 보면 무척 단순하고 간단한 것 같지만 실제로는 한글과 우리말에 대한 정밀한 조사와 검토를 거쳐서 이루어진 것입니다.
그러나 아직도 컴퓨터에서 한글을 실현시키는 방식이 안정되어 있지 않은 것으로 보입니다. 컴퓨터 프로그램과 인터넷의 정보 제공처에서 사용하는 한글 코드 체계가 일정하지 않아서 겪는 고통이 한두 가지가 아닙니다. 더군다나 이 한글 코드에 숫자로 기억되어 있는 한글을 컴퓨터 화면에서 구현하기 위한 화면 폰트 작업이나 인쇄할 때에 출력되는 한글 폰트 작업도 정돈되어 있지 않은 상태입니다.
더군다나 남과 북이 인터넷으로 연결된다고 하더라도 남과 북이 서로 의사소통이 가능하지 않다는 사실이 우리를 더 서글프게 합니다. 남과 북의 말은 서로 통할지언정, 정보 교환을 용이하게 하는 인터넷상이나 컴퓨터 처리 과정에서는 코드가 달라서 의사가 불통될 것이기 때문입니다. 하지만 최근에 북에서도 유니코드를 사용하는 것 같아서 다행입니다. 코드가 맞아야 통일도 앞당길 수 있는 것이겠지요?
글_홍윤표
홍윤표
전 연세대학교 국어국문학과 교수. 한국어학회 회장, 국어학회 회장을 역임하였으며 겨레말큰사전 남측 편찬위원장을 지냈다. 동숭학술연구상, 옥조근정훈장 등을 받았으며 <근대국어연구>, <17세기 국어사전> 등의 저서가 있다.