완성형
- KSX 1001-1987 (구 KSC-5601-1987)
- 완성된 글자에 코드 부여
- 기억공간
- 1바이트: 영문, 숫자, 구둣점 등
- 2바이트: 한글, 한자, 전각 특수기호 등
- 특징
- 국제 표준 코드 준수
- ISO-2022 부호 확장법
- 2바이트 완성형 정보 교환 코드
- 정보 교환 시 코드간 충돌 없음
- 융통성 없음
- 기억공간 많이 차지
조합형
- KSX 1001-1992 (구 KSC-5601-1992)
- 한글의 초/중/종성에 코드 부여
- 기억공간
- 1바이트: 영문, 숫자, 구둣점 등
- 2바이트: 한글, 한자, 전각 특수기호 등
- 특징
- 코드를 조합하여 문자 표현
- 현대 한글 완전 표현: 11,172자
- 2바이트 조합형 정보 처리 코드
- 정보 교환 시 코드 간 충돌 발생
- 융통성 있음
- 기억공간 적게 차지
- 코드 구성
- b15: 한글/특수문자 = 1
- b10~14: 초성
- b5~9: 중성
- b0~4: 종성
유니코드
- KSX 1005-1 (구 KSC-5700)
- 고정된 코드 공간에 문자 할당
- UCS 표준: Unicode 2.0
- 기억공간
- UTF-16: 2바이트, 모든 문자
- UTF-8
- 1바이트: 영문, 숫자, 구둣점 등
- 2바이트: 한글, 한자, 전각 특수기호 등
- 특징
- 현대한글 11,172자 표현
- 한글을 가나다 순으로 코드테이블 할당
- 다국어 지원
- 외국의 문자셋과 혼용 가능
- 한자는 한/중/일 공통으로 지원
- 외국 S/W의 한글화 용이
- 국산 S/W의 다국어 지원
- UTF-16의 경우 기억공간 많이 차지
- 코드 구성
- 한글 시작: 44032 (0xAC00)
- 한글 끝: 55203 (0xD7A3)
- 초중성 구하기
int first = ( ch - 0xAC00 ) / ( 21 * 28 ); int second = ( ch - 0xAC00 ) % ( 21 * 28 ) / 28; int third = ( ( ch - 0xAC00 ) % ( 21 * 28 ) ) % 28;