한글 상용 조합형 인코딩

한글 상용 조합형 인코딩 또는 상용 조합형은 2바이트 문자 인코딩으로, 그냥 조합형이라고도 불린다. 본래 삼보컴퓨터가 주도한 개방적인 산업 규격이며, 삼보 조합형 또는 KSSM 조합형 혹은 상용 조합형으로 불리다가, KS X 1001:1992 부속서 3에서 수용되어 표준화되었다. 표준화 이후 표준 조합형 또는 KS 조합형으로 구분하여 부르기도 하지만, 그냥 상용 조합형으로 통칭하기도 한다. 마이크로소프트에서는 이 인코딩을 표준화한 첫 번째 규격의 이름인 ks_c_5601-1992로 사용하고 있다.

그림으로 나타낸 상용 조합형 인코딩의 구조. 어두운 초록색은 미완성 한글이다.

완성형 한글 코드와 달리 5비트 단위로 자소를 조합하여 한글 글자 마디를 표현한다. 상용 조합형은 모든 현대 한글을 표현할 수 있으며 미완성 한글까지 2바이트로 표현할 수 있다. 하지만 둘째 바이트의 최상위 비트가 0일 수도 있기 때문에 문자열 검색 등에서 문제가 생길 수 있다. 도스 시절에 많이 사용되었으나, 한글 윈도 95에서 상용 조합형을 지원하지 않으면서 현재는 거의 사용되지 않는다.

구성 편집

상용 조합형에서는 한글을 2바이트 코드로 표현하며, 최상위 비트는 1로 설정하고 초성, 중성, 종성에 각각 5비트씩 할당하여 차례로 조합한다.

코드 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
초성 - 채움 - - - - - - - - - - -
중성 - - 채움 - - - - - - - -
종성 - 채움 - - -

특수문자와 한자는 위와 같이 조합되는 한글을 피하기 위하여 별도의 계산 과정을 거친다. 이는 Shift_JIS와 그 방법이 비슷하다.

  1. 행 번호에 0x191(특수문자의 경우, 0x30행 미만) 또는 0x176(한자의 경우, 0x4A행 이상)을 더한다. 이 값을 2로 나눈 몫을 첫 번째 바이트로 한다.
  2. 1에서 나온 값이 짝수인가 홀수인가에 따라, 열 번호에 0x3D를 더하거나(홀수) 0x21을 뺀다(짝수).
  3. 2에서 나온 값이 0x4E보다 작으면 0x31을 더하고, 아니면 0x43을 더해서 두 번째 바이트로 한다.

예를 들어 "위"는 초성·중성·종성 코드가 13, 23, 1이 되고, 2진법으로는 1 01101 10111 00001이 되므로 B6 E1이라는 두 바이트로 표현된다. 그리고 "∞"는 KS X 1001에서 0x21행 0x44열에 있는 특수문자이므로, 첫째 단계에서 0x21 + 0x191 = 0x1B2, 둘째 단계에서 0x44 - 0x21 = 0x23, 셋째 단계에서 0x23 + 0x31 = 0x54가 되어 최종적으로 D9 54라는 두 바이트로 표현된다.

코드 페이지 1361 편집

코드 페이지 1361(CP1361)은 마이크로소프트 한글 윈도가 지원하는 코드 페이지이며, CP949와 같으나 상용 조합형을 사용하는 것이 다르다. 이 코드 페이지는 확장 완성형에 대한 비난이 거세져서 추가한 것이지만, 코드 변환을 빼고는 실제로 사용할 수 없다.

2019년 4월 기준, Windows 10(1803)의 명령 프롬프트에서 명령어 chcp 1361을 통해 지원한다.[1] 그러나, CMD의 기본 글꼴인 '래스터 글꼴'이 알맞지 않게 표시되며(KS X 1003 주소 부분에서 깨져버린다), 설정 메뉴에서 코드 페이지를 CP1361(한글 - 조합형)으로 설명하고 있지만, 명령 프롬포트 자체는 유니코드 모드로 작동한다(예를 들어 변환 직후에는 Current Code Page: 1361로 표시). 다른 점이 있다면, 한글 OS에서 표시하는 CP949 모드의 한글을 완벽하게 표시하고 있다.

같이 보기 편집

각주 편집

  1. 그런데 CP 버전은 오래된 것으로 보인다. 관리를 안 한 탓인지 일부 글꼴이 깨질 수 있다.

외부 링크 편집