첫 화면 > 한글의 진화와 미래 > 국어 정보화 > 한글 코드란 무엇인가?

한글 코드란 무엇인가?

1 2
3. 한글 코드 표준화의 간략한 역사
(1) 완성형 한글 코드(Complete code system of Hangul)
1바이트로 처리될 수 있는 영문자와 달리 한글(음절)은 글자의 특성상 2바이트 이상의 부호체계로 구성되어야 하는데, 이를 국가 표준화한 것이 KSC 5601이다. 국제표준화기구의 정보교환용 부호체계인 ISO 2022에 맞추어 1987년에 처음 제정된 이 표준은 ‘완성형 한글 코드’로 불리며, 사용빈도가 높은 한글 2,350자와 한자 4,888자 및 특수문자 986자로 구성되어 있다. 이 체계는 제정 이후 행정전산망 등에서 사용되었고, <윈도95> 등 개인용 컴퓨터 운영체계의 코드로도 사용될 정도로 힘을 가지게 되었다.
 
(2) 조합형 한글 코드(Combined code system of Hangul)
완성형 한글은 모든 한글 글자를 다 지원하지 못하며, 그 구성방법도 한글 음절의 조합 원리에도 맞지 않기 때문에, 민간에서 사용되던 코드 체계를 발전시켜 1992년에는 소위 ‘조합형 한글 코드’를 복수 표준화하였다(KS C5601-1992). 조합형은 초성, 중성, 종성자들에 일정한 값(5비트로 정해짐)을 정해 두고, 여기에 한글 구분 비트를 보태어, 그 값들을 조합한 2바이트 값을 코드값으로 가진다. 이 부호계는 일부 문서처리기(워드프로세서)에서 내부적인 정보처리 부호계로 사용되고 있다.
 
(3) 통합형 한글 코드
조합형 코드는 현대 한글의 처리에는 별 문제가 없지만, 옛한글의 자소를 조합형 코드 체계 내에 다 수용할 수 없었으므로 옛한글 처리에는 어려움이 많았다. 또한 한자 역시 충분한 영역을 확보할 수 없으므로, 이상적인 한글 부호계 혹은 학술용 부호계로서는 부족하였다. 따라서 국내에서도 나름대로 이 문제의 해결책을 찾기 위해서 노력을 했고, 또 국제적인 표준 활동에도 참여하여 Unicode의 제정에 우리 문자의 특수성을 반영하였는데, 그 결과로 만들어진 코드체계를 통합형이라고 할 수 있다.
통합형이라는 것은 조합형과 완성형을 포괄하는 것으로서, 특히 문자 체계 중 한글 부분의 처리에 관계된 것이다.
세계 각국의 모든 문자를 한 체계 안에서 사용하기 위한 연구가 계속되어 ISO 10646-1이라는 국제표준부호계가 마련되었고, 우리나라에서도 1995년에 이를 국내표준(KS C 5700)으로 받아들였다.(이후에 KS X 1005-1로 재규격화되었다.) 이 부호계에서 한글 음절자 11,172자는 완성형으로 처리되며, 한글 옛글자를 포함한 자소도 들어 있기 때문에 조합의 과정을 거쳐 거의 모든 한글 음절자를 구현할 수 있다. 이외에도 우리 문헌에 등장하는 구결자도 처리 가능하며, 한자도 2만여자까지 쓸 수 있다. 장차 이 부호계가 컴퓨터 사용환경에 등장하여, 정보처리나 정보교환 등에서 편의롭게 사용될 것으로 예상된다. <윈도2000>에서 채택하였으며, <글>에서는 <워디안> 이후 <2002>판에서 지원하고 있다.
국제 표준 글자 부호계(ISO 10646 혹은 Unicode)가 본격적으로 사용되면, 개별 국가에서 별도의 코드 체계를 만들 필요가 없다. 세계 각국의 모든 문자를 하나의 체계로 컴퓨터에서 사용할 수 있을 뿐만 아니라 국제적으로 통신망을 통해서 아무런 불편 없이 원고나 자료 및 정보를 주고받을 수 있게 된다.
이 코드 체계를 사용할 경우 당연히 옛글자와 한자 문제는 해결된다. 한자의 경우 한국ㆍ중국ㆍ일본 등 세 나라가 사용하고 있는데, 각국의 독특한 한자들을 포함하여 수만 자의 처리가 가능해질 것으로 생각된다. 그리고 각국이 서로 자료를 교환하는 데에도 아무런 불편이 없게 된다.
이 체계를 채택할 경우 한글과 옛글자의 처리가 현재처럼 고정 바이트가 아니라 가변 바이트(멀티 바이트라고도 부르는 것으로, 한글의 경우에는 종성의 있고 없음에 따라서 6바이트 혹은 4바이트가 된다.)가 되기 때문에 자료 처리용 전문 엔진이 필요하게 되며, 자료의 양도 2바이트 고정체계인 지금보다 2,3배 더 많게 된다는 문제가 생긴다.
 
(4) 학술용 부호체계
여기서 말하는 학술용 부호체계는 자료의 입력과 처리 및 출력, 그리고 자료 교환을 포괄하는 개념이다. 여기에서는 특히 어문 연구를 위해서 사용되는 옛글자 처리가 포함된 문자 처리 체계의 현황(우리나라에서의)을 소개하고 전망을 제시한다. 언어와 문학 연구를 위해서(특히 언어 연구를 위해서) 사용되는 자료는 거의 모든 문헌자료를 망라한다. 따라서 초점을 어문연구로 한정시키더라도 전반적으로 한국학 연구에 바탕이 될 것이다.
한국학 자료라고 일컬을 수 있는 것 중에는 특히 고문서(고서와 고문헌)가 많고, 고문서에는 으레 한글 옛글자와 많은 종류의 한자가 사용된다. 한글의 특성을 나타내는 데에는 조합형이 제격이지만, 고문서에 들어 있는 한글 옛글자는 조합형 체계에 포함되어 있지 않으며, 한자 역시 KS 표준 4,888자로서는 아주 부족하다. 게다가 이두(吏讀) 자료 처리 역시 문제가 아닐 수 없다.
한국학 자료의 전산 처리에는 이것이 늘 걸림돌이 되고 있다. 즉 정부가 주도하여 만드는 코드체계는 정보교환을 우선하기 때문에, 한글의 경우에는 현행 맞춤법의 범위 내에서 사용할 수 있는 문자만을 제공하며, 한자의 경우에는 일정한 정도의 사용 빈도를 가지고 있는 글자로 제한할 수밖에 없다.
 
(5) 한글 코드의 여러 유형
지금까지 제정되었거나 사용되었던 것 중 현재 기준으로 중요하다고 판단되는 것만 몇 가지 정리해 보면 다음과 같다.
 
분류기준 한글 코드
조합원리 조합형 2 바이트 조합형
3 바이트 조합형
N 바이트 조합형
유니 조합형
완성형 2 바이트 완성형
7 비트 완성형
유니 완성형
바이트수 N 바이트 N 바이트 조합형
유니 조합형
3 바이트 3 바이트 조합형
2 바이트 2 바이트 조합형
2 바이트 완성형
7 비트 완성형
유니 완성형
8번째 비트 7 비트 7 비트 완성형
N 바이트 조합형
8 비트 2 바이트 조합형
2 바이트 완성형
N 바이트 조합형
 
① N 바이트 한글 코드
N 바이트 코드는 한글을 풀어쓴 것과 같이 자음과 모음을 각각 1 바이트씩 처리하는 형식의 코드이다. 따라서 한글 1 음절을 표현하기 위해 글자별로 2 바이트부터 5바이트까지를 사용한다. 이런 이유로 멀티바이트(multi-byte) 코드라고도 부른다. 여기에도 두 가지 방식이 있을 수 있는데, 첫번째 방식은 한글 자모를 자음 19자, 모음 14자의 33 자로 보는 방식이고, 또 하나는 자음 + 받침 30개에다가 모음 21개로 보는 방식이다.
 
 
첫번째 방식
자음 : ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ
모음 : ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅛ ㅜ ㅠ ㅡ ㅣ
 
두번째 방식
자음 : ㄱ ㄲ ㄴ  ㄷ ㄸ ㄹ     ᄚ ㅁ ㅂ  ㅃ ㅅ ㅆ
(받침 포함) ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ
모음 : ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ
 
다음에 N 바이트 1 음절의 한글 구성의 예를 보이도록 한다.
 
음절 한글 코드   두번째 방식  
ㄴ + ㅏ 2 바이트 ㄴ + ㅏ 2 바이트
ㄷ + ㅏ + ㄱ 3 바이트 ㄷ + ㅏ + ㄱ 3 바이트
ㄱ + ㅗ + ㅏ + ㅇ 4 바이트 ㄱ + ㅘ + ㅇ 3 바이트
ㅅ + ㅏ + ㄹ + ㅁ 4 바이트 ㅅ + ㅏ +  3 바이트
ㄱ + ㅗ + ㅐ + ㄹ + ㅁ 5 바이트 ㄱ + ㅙ +  3 바이트
 
이 코드는 80년대 초반에 널리 사용되었으며 7비트 아스키 환경에서도 사용할 수 있다는 장점이 있지만, 한글 처리에서는 적합하지 않아 곧바로 사라지게 되었다. 무엇보다도 가장 문제가 되었던 점은 문자를 비교하거나 순서대로 정렬할 경우에 한글의 배열순서와 맞지 않는다는 것이다.
이렇게 문제가 있는 코드를 설명하는 이유는, 현재의 정보검색이나 한글맞춤법 검사, 자동색인, 형태소 분석 등의 한글 정보처리 작업에서는 N 바이트 코드방식을 이용하고 있기 때문이다. 그 이유는 완성형이나 조합형 코드로는 옛한글은 물론이고 현대한글의 언어 정보까지도 완벽하게 처리할 수 없기 때문이다.
 
② 3 바이트 한글 코드
3 바이트 한글 코드는 한글 1 음절을 초성, 중성, 종성으로 나누고 각각을 1 바이트씩 배정해서 처리하는 것으로 한글 1음절을 처리하는데 3 바이트를 사용하기 때문에 이러한 이름이 붙여졌다. 그런데 한글 1 음절을 표현하기 위해서 3 바이트를 사용하기 때문에 2 바이트 조합형 코드보다 1 바이트를 더 많이 사용한다. 따라서 2 바이트 조합형 코드보다 비효율적이므로 자취를 감추게 되었다. 다음에 3 바이트 한글 코드를 보이면 다음과 같다.
 
문자 초성 + 중성 + 종성
ㄷ + ㅐ + 채움(fill code)
ㅎ + ㅏ +
ㅁ + ㅣ +
ㄱ + ㅜ +
ㄱ + ㅘ +
 
③ 8비트 2 바이트 조합형 코드
2 바이트 조합형 코드는 3 바이트 한글 코드와 비슷하게 한글 1 음절을 초성, 중성, 종성의 세 부분으로 쪼개어 표현하는 방식이다. 그러나 2 바이트 조합형 코드에서는 초성, 중성, 종성을 1 바이트로 표현하는 것이 아니라 <그림>과 같이 각각을 5 비트로 표현하고 이를 묶어서 2 바이트로 만들어서 한 글자를 표현한다.
이때 초성, 중성, 종성에 각각 5 비트를 주면 2 바이트 중에서 첫번째 바이트의 MSB(most significant bit, 최상위 비트)가 남는데, 이것은 한글과 영문자를 구별하는 용도로 사용한다. 즉 첫번째 바이트의 MSB가 1 이면 한글이고 0 이면 영문자이다.
 
8비트 2 바이트 조합형 코드
 
2 바이트 조합형 한글 코드는 1980년대 초반 한국 IBM 등에서 사용하기 시작하였으며, 1980년대 중반 IBM PC가 널리 보급되면서 주된 코드로 자리를 잡게 되었다. 조합형도 각 회사마다 다 달라서 상용 조합형(한국 IBM, 삼보 컴퓨터, 큐닉스, 현대, 쌍용 등에서 사용), 금성 조합형, 삼성 조합형 등이 있다. 각각의 기본원리는 동일하지만 초중종성의 배치와 한자 특수문자 부분의 배치가 각각 다르다.
2 바이트 조합형 코드는 3 바이트 한글과 같이 한글 1 음절의 길이가 일정하다는 특성을 가지고 있으므로 내부 처리에 매우 적합한 코드이다. 또한 이는 화면상에 표시할 때에도 한글과 영문자의 글자 크기가 2:1로 되어 있어서 화면 출력에 적합한 장점을 가지고 있어서 1987년에 완성형 KS 코드가 출현하기 전까지 널리 사용되던 코드였다.
 
④ 조합형과 완성형의 문제점
㉠ 완성형의 문제점
완성형 코드란 대체로 KS C 5601의 한글코드를 가리킨다. 조합형을 주장하는 사람들은 한글의 구성원리가 초성, 중성, 종성을 조합하여 한 글자를 이루는 구조로 되어 있기 때문에, 완성형은 그 방식 자체가 한글을 표현하기에 부적당하다고 말한다. 실제로 한글 음절글자 11,172 자 중에서 그 20%밖에 되지 않는 2,350자를 아무런 체계 없이 뽑아내서 순서대로 코드값을 부여하는 방식은 한글의 구성원리를 제대로 담아내지 못했다고 할 수 있다.
이러한 글자수의 문제 때문에 이른바 확장 완성형(일반적으로는 통합형 한글 코드라고 부른다)이 등장하였지만, 완성형 코드 배정이 끝난 뒤에 다시 확장 완성형이 배정되었기 때문에, 완성형에 들어 있는 글자와 확장 완성형에 들어 있는 글자 사이에 정렬이 잘못되는 경우가 있다. 예컨대 확장 완성형에 들어 있는 ‘똠, 쓩’은 완성형에 들어 있는 글자인 ‘하’의 뒤에 배열되는 것 등이다.
또한 한국어 음성인식이나 음성 합성, 한글 맞춤법 검사기나 형태소 분석기 등 한글을 처리하는 모든 프로그램에서는 한글에서 자소를 분리하거나, 자소를 주어 한글 코드를 만드는 일이 수없이 많이 필요하다. 완성형은 근본적으로 코드값에 자소 조합에 대한 정보가 없기 때문에 변환테이블을 두든지, 아니면 일단 조합형으로 변환한 다음에 자소를 분리해야 한다. 따라서 완성형 코드로는 이러한 고수준의 한글 처리에 많은 문제점이 따를 것이다. 그러나 조합형은 코드 자체가 초성, 중성, 종성에 해당하는 5비트식의 코드가 결합되어 만들어지므로 간단한 계산으로 초성, 중성, 종성을 분리할 수 있다.

㉡ 조합형의 문제점
조합형 한글의 단점은 통신상에서 나타난다. 완성형 한글의 경우 연속된 2 바이트의 MSB(최상위비트, Most Significant Bit)가 모두 1로 되므로 한글과 영문의 구별이 매우 쉬운 장점이 있다. 그러나 조합형 한글의 첫 번째 1 바이트의 MSB는 1로 되지만, 두 번째 바이트의 MSB는 중성과 종성에 따라 0 혹은 1이 되기 때문에 통신 제어 코드와 충돌을 일으킬 여지가 있다. 즉 아스키 코드 128 이하인 문자 중 각종 운영체제에서 특별한 의미로 사용되는 [ , ] , $, &, %, {, }, ^, | 등의 문자 등과 문제가 된다.
완성형이 조합형에 비하여 가장 큰 이점이 바로 국제 호환성 문제다. 완성형은 ISO 2022 규격을 따르고 있지만, 조합형은 그렇지 못하다. 코드 표준화 당시에도 이러한 단점이 지적되었기 때문에 결국 완성형이 국가 표준으로 채택된 것이다
그래서 한글 코드 문제는 이미 여러 번의 표준화 과정을 거쳐 왔지만, 아직까지 혼란 상태에 있다고 할 수 있다. 그 표준화 과정을 간단히 보이면 다음과 같다.
 
연도 규격 번호 내용
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 1001(KS C 5601-1987 완성형의 신규격)
2001년 (최종개정) 신규격번호 KS X 1001(KS C 5657-1991의 신규격)
2002년 (최종개정) KS X 1005-1 (KS C 5700-1995(유니코드)의 신규격)
 
현재는 KSC 5601-1987과 KSC 5601-1992가 공동표준으로 사용되고 있는 형편이다. KSC 5700은 KS X 1005-1로 최종 개정된 것인데, ISO 10646-1로서 국제표준기구에 정식으로 등록된 한글 코드를 그대로 표준코드로 정한 것이다. 앞으로 ISO에 새롭게 등록할 코드에 대한 준비가 필요한 때이다.
이 한글 코드에 대한 문제는 다음의 몇 가지들이 재검토되어야 한다.
 
① 한글의 범위 문제 : 현대한글, 옛한글, 구결 글자, 한국한자의 포함 여부
② 한글의 자모 배열 순서 문제
③ 조합형과 완성형의 문제
④ 한글 자형의 문제
⑤ 한자의 문제
⑥ 남북한 한글코드의 통일 문제
 
이 여섯 가지 문제는 아직도 합리적이고도 종합적인 연구가 이루어졌다고 하기 힘들다. 특히 한글코드의 통일 문제는 남한과 북한뿐만 아니라 전세계의 한국어 사용자들의 정보 전달을 원할히 할 수 있는 가장 빠른 길이므로, 이것의 통일 문제는 국어학계에서 전반적으로 재검토할 필요가 있다. 한자 코드 문제는 한자의 빈도수 조사도 전혀 이루어지지 않은 상태에 있기 때문에, 그 연구가 더욱 시급한 실정에 있다고 할 수 있다.
 
1 2
 
맨 위로