본문 바로가기
Computer Science/Programming language

한글코드의 표준화 과정

by HaningYa 2020. 3. 27.
728x90

한글코드의 표준화 과정

최초의 컴퓨터인 ENIAC이 만들어진 후 15년이 지나서야 문자 집합이라는 개념이 생겼다. 그 시초는 127개의 문자를 표현할 수 있는 ASCII 코드이다. 이후 프랑스어, 독일어와 같은 유럽어를 표현하기 위해 확장 ASCII 를 만들었고 128번부터 255번까지 새로운 문자를 정의할 수 있었다. 이 확장 ASCIIISO8859 유럽 통일 표준안으로 제정되었다. 하지만 중국, 일본 한국(CKJ)의 경우 한글, 한자, 병음등 그 개수가 많아 확장 ASCII코드로도 모두를 처리할 수 없었다. 컴퓨터에서 한글 표현 방법의 경우 크게 조합형과 완성형으로 나눌 수 있다.

1.      조합형 : 한글의 제자 원리에 기반하여 초성, 중성, 종성에 각각 코드를 할당하는 방식

  • N바이트 조합형
    -
    고육지책으로 고안된 최초의 한글 표현 방식
    -
    대형 컴퓨터에서 단말기를 이용하여 한글을 표현하는데 사용됨
    -
    개별적인 한글 자모를 영문자 하나하나에 대응시키고 시작과 끝에 SI(Shift In)SO(Shift Out)을 추가하여 한글과 영어를 구분했다.
  • 2바이트 조합형
    - 초성, 중성, 종성에 각각 5바이트씩 할당하고 처음 1비트는 1로 설정하여 한글임을 표시한다.
    - 대우, 삼보 등 여러회사에서 각각의 조합형 방식을 제안해서 사용했다.
    - 나중에는 삼보 컴퓨터가 주도한 상용 조합형(KSSM)이 표준처럼 사용되었다.
  • 3바이트 조합형
    - 초성, 중성, 종성에 1바이트씩 할당하여 사용하는 방식이다.
    - 중성과 종성이 없는 글자를 위해 채움문자(fill code)를 정의하고 있다
    - KS X 1001 표준안의 한글 채움 문자 방식과 유사하다,

 

2.      완성형 : '', '', ''가 같은 완성된 문자에 코드를 할당하는 방식이다.

  • 2바이트 완성형
    -
    완성된 음절을 코드와 일대일 대응시키는 방식이다.
    - ISO 2022
    표준을 기준으로 하였다.
  • 7바이트 완성형
    - 세운상가에서 만들었다고 하여 청계천 한글이라고도 한다.
    - 소문자 뒤에 대문자가 오는 경우가 거의 없고 특수문자 뒤에 영문자가 오는 경우가 거의 없다는 점에서 착안하였다.
    - 처음 1바이트가 소문자이거나 특수문자이고, 그 다음 1바이트가 대문자이면 한글로 표현한다.
    - 글자 표현이 1,300자로 제한된다는 점과 일부 영어 단어가 한글로 표시되는 문제가 있다.
  • 확장 완성형
    - MS가 독자적으로 제정한 문자 집합이다.
    - 완성형 코드에서 표현할 수 없던 8,822자가 추가되었다.
    - 통합형 한글 코드(UHC)라고도 하며 현대 한글을 모두 표현한다.

 

1992년에 KS C 5601 표준안에 완성형/조합형을 모두 표준으로 지정하였으나, 표준 조합형은 기존에 사용되던 상용 조합형과의 코드가 맞지 않아 거의 사용되지 않았다.

1990년 초반까지 조합형과 완성형이 모두 사용되었지만, 국가주도의 프로그램, 운영체제에서 완성형을 기본으로 지원하였고 조합형은 사장되었다.

 

Unicode가 표준화 과정

독자적으로 언어를 표현할 수 있었지만 동시에 예를들어 한국어, 중국어, 일본어를 표현하지는 못했다. 그래서 전 세계적으로 사용되는 모든 문자 집합을 하나로 모아 탄생시킨 것이 유니코드이다. 유니코드 1.0.019918월에 제정되었고 그로부터 5년이 지난 1996년에야 유니코드 2.0.0에 한글 11,172자가 모두 포함되었다. 유니코드의 인코딩 방식으로는 UTF-7, UTF-8, UTF-1, UTF-32가 있다. 이중 ASCII 와 호환이 가능한 UTF-8이 가장 많이 사용된다.



  • KS5601 : 한글을 표현하는 코드체계의 국가표준으로써, 통상 완성형 코드
    - 2
    바이트로 구성, 2350자의 완성형 한글과 94자의 조합형 자음 및 모음을 지원
    - ASCII 코드와의 충돌을 피하고 호환성을 도모함
    - 2바이트를 기본으로하여, 최상위 비트가 `1`이며, 0xA1~0xFE 까지 표현한 문자 세트
    - 모든 한글을 다 표현할 수 없음 (최대 8,836자 만 가능)
  • ISO646 : 7비트의 문자 코드를 규정하는 국제 표준화 기구(ISO) 표준이며, 이것을 바탕으로 각 나라 언어판의 문자 코드가 규정된다.
    - 미국의 규격인 ASCII를 국제화한 체제이다.
    - 라틴 문자와 숫자를 중심으로 하는 공통 부분과, 각 나라 규격으로 자유롭게 할당할 수 있는 부분(ASCII에서는 기호에 해당)으로 나뉘어 있어 유럽 각 나라에서는 이 부분에 발음 구별 기호를 더해 문자를 할당하여 자국어의 문장을 인코딩할 수 있게 되어 있다.
    - 현재는 유럽에서는 8비트 코드인 ISO/IEC 8859가 주류이기에, 이 규격은 그다지 많이 사용되지 않았다.
  • UTF8 : 유니코드를 위한 가변 길이 문자 인코딩 방식
    - UTF-8 인코딩은 유니코드 한 문자를 나타내기 위해 1바이트에서 4바이트까지를 사용한다.
    - UTF-16 UTF-8 중 어느 인코딩이 더 적은 바이트를 사용하는지는 문자열에서 사용된 코드 포인트에 따라 달라지며, 실제로 DEFLATE와 같은 일반적인 압축 알고리즘을 사용할 경우 이 차이는 무시할 수 있을 정도이다.
  • UTF16 : 유니코드 문자 인코딩 방식의 하나이다.
    - UTF-16은 유니코드 컨소시엄과 ISO/IEC 10646에 의해 정의되어 있다.
    - 기본 다국어 평면의 문자들은 곧바로 16비트 값으로 대응되어 인코딩되며, 이 경우에는 인코딩된 바이트 스트링의 엔디언만 조심하면 된다.

 

[참고]

불러오는 중입니다...

 

728x90

댓글