완성형 한글 코드표 매뉴얼

1. 개요

  • KSC5601은 한국어 문자 세트를 정의하는 완성형 한글 인코딩 표준으로, 1987년 한국정보통신표준(KS X 1001)에서 제정
  • 이 표준은 총 11,172개의 완성형 한글과 한자, 특수문자를 포함하며, 주로 2바이트 코드(94×94 배열)를 사용하여 표현

2. KSC5601 코드 영역

2-1. 주요 코드 범위

코드 영역설명범위
한글 완성형 문자완성형 한글 2,350자0xB0A1 ~ 0xC8FE
한자 및 특수문자한자와 특수 기호 포함기타 영역

2-2. 한글 완성형 문자 구조

한글 완성형 문자는 초성, 중성, 종성의 조합으로 구성됩니다. 각 조합은 KSC5601 표준에 따라 고유한 코드값을 가짐

3. 초성, 중성, 종성 인덱스

초성인덱스중성인덱스중성인덱스
000
111
222
333
444
555
666
777
888
999
101010
111111
121212
131313
141414
151515
161616
171717
181818
1919
2020

4. KSC5601 한글 코드 계산 방법

KSC5601 코드 계산은 초성, 중성, 종성 인덱스를 기반으로 다음 공식을 사용:

KSC5601 코드 인덱스 = (초성 인덱스 x 588) + (중성 인덱스 x 28) + 종성 인덱스

계산 단계

  1. 초성, 중성, 종성 인덱스 확인:
    • 초성은 018, 중성은 020, 종성은 0~27로 구분
  2. 공식에 대입:
    • 초성 인덱스 × 588
    • 중성 인덱스 × 28
    • 종성 인덱스를 모두 합산
  3. 기준점(0xB0A1)을 더해 최종 코드값 계산:
    • 최종 코드값 = 0xB0A1 + KSC5601 코드 인덱스

예제 계산

”가”의 코드 계산:

  • 초성: ㄱ (0)
  • 중성: ㅏ (0)
  • 종성: 없음 (0)
  • (0 x 588) + (0 x 28) + 0 = 0
  • 최종 코드값: 0xB0A1

”각”의 코드 계산:

  • 초성: ㄱ (0)
  • 중성: ㅏ (0)
  • 종성: ㄱ (1)
  • (0 x 588) + (0 x 28) + 1 = 1
  • 최종 코드값: 0xB0A2

”낙”의 코드 계산:

  • 초성: ㄴ (2)
  • 중성: ㅏ (0)
  • 종성: ㄱ (1)
  • (2 x 588) + (0 x 28) + 1 = 1177
  • 최종 코드값: 0xB3AB

”닿”의 코드 계산:

  • 초성: ㄷ (3)
  • 중성: ㅏ (0)
  • 종성: ㅎ (27)
  • (3 x 588) + (0 x 28) + 27 = 1791
  • 최종 코드값: 0xB5CF

”삶”의 코드 계산:

  • 초성: ㅅ (9)
  • 중성: ㅏ (0)
  • 종성: ㄻ (10)
  • (9 x 588) + (0 x 28) + 10 = 5292
  • 최종 코드값: 0xBDA6

”닭”의 코드 계산:

  • 초성: ㄷ (3)
  • 중성: ㅏ (0)
  • 종성: ㄺ (9)
  • (3 x 588) + (0 x 28) + 9 = 1761
  • 최종 코드값: 0xB5C1

5. KSC5601 코드표 요약

문자초성중성종성인덱스코드값
없음00xB0A1
10xB0A2
20xB0A3
30xB0A4
40xB0A5
50xB0A6
60xB0A7
70xB0A8
80xB0A9
90xB0AA
없음11760xB3AA
11770xB3AB
11780xB3AC
없음17640xB5B0
17650xB5B1
17660xB5B2
17670xB5B3
17720xB5B6
17760xB5B8
17770xB5B9
17800xB5BB
17810xB5BC
17950xB5CE
없음23520xB8A1
23600xB8A9
23680xB8B0
23760xB8B8

6. KSC5601 코드와 유니코드의 특징

6.1. KSC5601과 Unicode의 개요

KSC5601
  • KSC5601(KS X 1001)**은 1987년 대한민국에서 제정된 문자 집합 표준으로, 완성형 한글을 포함
  • KSC5601은 2,350개의 완성형 한글과 약 8,800개의 한자, 특수문자 등을 포함한 총 94×94의 2바이트 문자 집합을 정의
  • 모든 한글 문자는 초성(19개), 중성(21개), 종성(28개)의 조합으로 이루어진 완성형 문자만을 표현
Unicode
  • Unicode는 전 세계의 모든 문자를 하나의 체계로 통합하기 위해 설계된 문자 집합 표준
  • 한글의 경우 조합형 한글 방식을 지원하여 초성, 중성, 종성을 조합하여 무제한의 문자를 생성할 수 있음
  • Unicode의 한글 범위:
    • U+AC00 ~ U+D7A3: 완성형 한글 11,172자
    • U+1100 ~ U+11FF: 한글 자모 (초성, 중성, 종성의 개별 문자)
    • U+3130 ~ U+318F: 호환용 한글 자모

6.2. KSC5601과 Unicode의 주요 차이점

항목KSC5601Unicode
한글 처리 방식완성형 문자만 표현 가능조합형 문자와 완성형 문자 모두 지원
문자 수2,350개의 한글 문자11,172개의 한글 문자
조합 가능성초성, 중성, 종성 조합 불가 (정해진 글자만 지원)초성, 중성, 종성 조합 가능
코드 범위0xB0A1 ~ 0xC8FEU+AC00 ~ U+D7A3
표현 가능 문자제한적 (일부 문자 표현 불가)전 세계 모든 문자 표현 가능

6.3. KSC5601과 Unicode의 매핑 관계

6.3.1. 기본 매핑
  • KSC5601의 완성형 한글은 Unicode의 완성형 한글 범위(U+AC00 ~ U+D7A3)와 1:1로 매핑
  • KSC5601의 첫 번째 글자인 “가”는 0xB0A1이고, Unicode에서는 U+AC00에 대응
  • KSC5601에서 다음 글자는 0xB0A2로 정의되며, Unicode에서는 U+AC01에 해당
6.3.2. 매핑 공식

KSC5601 코드와 Unicode 코드의 변환은 아래와 같은 수식을 따름

KSC5601 → Unicode

Unicode 코드 = U + AC00 + (KSC5601 인덱스)

  • 예: “가” (KSC5601 0xB0A1)
    • 인덱스 = 0
    • Unicode = U+AC00 + 0 = U+AC00

Unicode → KSC5601

KSC5601 인덱스 = Unicode 코드 − U + AC00

  • 예: “각” (Unicode U+AC01)
    • 인덱스 = U+AC01 - U+AC00 = 1
    • KSC5601 = 0xB0A2