{{위키데이터 속성 추적}}
[[파일:Johab-map.png|frame|right|그림으로 나타낸 상용 조합형 인코딩의 구조. 어두운 초록색은 미완성 한글이다.]]

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

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

== 구성 ==
<!--
상용 조합형은 [[EUC-KR]]과 같이 [[KS X 1003]]을 128보다 작은 바이트에, [[KS X 1001]]을 나머지 영역에 배당한다. 한글(한글 자모 영역도 포함)은 첫 바이트의 최상위 비트가 설정된 두 바이트(16비트)로 표현하며, 첫 바이트의 최상위 비트를 뺀 나머지 15비트는 순서대로 초성, 중성, 종성에 다음과 같이 5비트씩 할당한다. 코드는 자모 순서에 맞춰서 배열되어 있으므로, 사전순으로 한글들을 정렬하면 발음 순으로 배열된다.
-->
상용 조합형에서는 한글을 2바이트 코드로 표현하며, 최상위 비트는 1로 설정하고 초성, 중성, 종성에 각각 5비트씩 할당하여 차례로 조합한다.

{| class="wikitable"
|- align="center"
! 코드
| 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
|- align="center"
! 초성
| - || <small>채움</small> || [[ㄱ]] || [[ㄲ]] || [[ㄴ]] || [[ㄷ]] || [[ㄸ]] || [[ㄹ]] || [[ㅁ]] || [[ㅂ]]
| [[ㅃ]] || [[ㅅ]] || [[ㅆ]] || [[ㅇ]] || [[ㅈ]] || [[ㅉ]] || [[ㅊ]] || [[ㅋ]] || [[ㅌ]] || [[ㅍ]]
| [[ㅎ]] || - || - || - || - || - || - || - || - || -
| - || -
|- align="center"
! 중성
| - || - || <small>채움</small> || [[ㅏ]] || [[ㅐ]] || [[ㅑ]] || [[ㅒ]] || [[ㅓ]] || - || -
| [[ㅔ]] || [[ㅕ]] || [[ㅖ]] || [[ㅗ]] || [[ㅘ]] || [[ㅙ]] || - || - || [[ㅚ]] || [[ㅛ]]
| [[ㅜ]] || [[ㅝ]] || [[ㅞ]] || [[ㅟ]] || - || - || [[ㅠ]] || [[ㅡ]] || [[ㅢ]] || [[ㅣ]]
| - || -
|- align="center"
! 종성
| - || <small>채움</small> || [[ㄱ]] || [[ㄲ]] || [[ㄳ]] || [[ㄴ]] || [[ㄵ]] || [[ㄶ]] || [[ㄷ]] || [[ㄹ]]
| [[ㄺ]] || [[ㄻ]] || [[ㄼ]] || [[ㄽ]] || [[ㄾ]] || [[ㄿ]] || [[ㅀ]] || [[ㅁ]] || - || [[ㅂ]]
| [[ㅄ]] || [[ㅅ]] || [[ㅆ]] || [[ㅇ]] || [[ㅈ]] || [[ㅊ]] || [[ㅋ]] || [[ㅌ]] || [[ㅍ]] || [[ㅎ]]
| - || -
|}

특수문자와 한자는 위와 같이 조합되는 한글을 피하기 위하여 별도의 계산 과정을 거친다. 이는 [[Shift-JIS|Shift_JIS]]와 그 방법이 비슷하다.
# 행 번호에 0x191(특수문자의 경우, 0x30행 미만) 또는 0x176(한자의 경우, 0x4A행 이상)을 더한다. 이 값을 2로 나눈 몫을 첫 번째 바이트로 한다.
# 1에서 나온 값이 짝수인가 홀수인가에 따라, 열 번호에 0x3D를 더하거나(홀수) 0x21을 뺀다(짝수).
# 2에서 나온 값이 0x4E보다 작으면 0x31을 더하고, 아니면 0x43을 더해서 두 번째 바이트로 한다.

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

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

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

== 같이 보기 ==
* [[KS X 1001]]
* [[EUC-KR]]
* [[한글 조합형 인코딩]]
* [[한컴 2바이트 코드]]

== 각주 ==
{{각주}}

== 외부 링크 ==
* [http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT 상용 조합형 대 유니코드 매핑 테이블] (KS X 1001:1997 기준)

{{문자 인코딩}}

[[분류:문자 인코딩]]
[[분류:한국어 컴퓨팅]]