SlideShare a Scribd company logo
문자셋과 인코딩문자셋과 인코딩
SW 개발팀 정재훈
2007.3.26
목차
문자셋과 문자인코딩의 정의
ASCII 란 ?
ISO/IEC 2022 (EUC 인코딩 ,CCS)
한글 인코딩
일본어 인코딩
중국어 인코딩
유니코드
파일시스템과 문자 인코딩
문자셋과 문자인코딩의 정의
문자셋 ( Charset )
정보를 표현하기 위한 글자들의 집합
집합 안의 문자들에 음수가 아닌 정수들을 배정한 것을 부
호화된 문자 집합 (coded character set, CCS )
문자 집합은 ASCII 와 같이 더 이상의 문자가 추가될 수 없기도
하고 , 유니코드와 같이 문자가 계속 추가될 수 있기도 하다 .
문자인코딩 ( Character Encoding )
문자들의 집합을 컴퓨터에서 저장하거나 통신에 사용할 목적으로
부호화하는 방법
특정한 문자 집합 안의 문자들을 컴퓨터 시스템에서 사용할 목적
으로 일정한 범위 안의 정수 ( 코드값 ) 들로 변환하는 방법이다 .
ASCII 란 ?
정의
미국 정보 교환 표준 부호 (American Standard Code for Information
Interchange) – Coded Character Set
1967 년에 표준으로 제정되어 1986 년에 마지막으로 개정
국제표준
ISO 646 (7bit Encoding)
 ASCII 를 따르며 영어 숫자의 위치는 동일하게 하고 각 국가별로 조금씩 특수
기호들을 변환
 한국 : KSC5636(KS x 1003) “” -> “” (ISO646-KR)
ISO 8859 (8bit Encoding)
 MSB bit0 = 표준 ASCII 코드와 동일
 MSB bit1 = 각 나라별 필요코드 첨가
 다양한 버전 (16 개 ) 이 존재
ex) ISO-8859 Part16(Latin10)- 동유럽국가
ISO/IEC 8859
ISO 8859 -1
라틴 1 : 서유럽
ISO/IEC 2022
ISO/IEC 2022 규격 – 7bit, 8bit 두 종류로 구성
7bit 규격은 7~80 년대 Usenet, E-mail 교환을 위한 규격이다 . ( 자세한
설명 생략 )
관련 문자셋 (CJK 8bit, 2byte)
한국 : KSC-5601 ( 완성형 ), CP949 (CCS)
일본 : JIS x 0208, JIS x 0213 (CCS)
중국 : GB2312, GBK(CP939) (CCS)
관련 인코딩
한국 : EUC-KR (⊃ KSC5601, KSC5636[ASCII] )
일본 : EUC-JP
중국 : EUC-CN
ISO/IEC 2022 구조
코드 구조
7bit 코드테이블
 16 행 8 열로 128(16*8) 개의 키 위치 (key position) 를 나열
8bit 코드테이블
 16 행 16 열로 256(16*16) 개의 키 위치 (key position) 를 나열
7BIT 코드 테이
블
ISO2022 8 BIT 코드 테이블
GL 과 GR 에는
코드 요소를 넣
는다 .
ISO/IEC 2022 구조
표기법
테이블 위치 표시법 : xx/yy (xx = 열 , yy = 행 )
2 진법에서 xx 는 상위 4bit(8bit 기준 ), yy 는 하위 4bit
영역설명
테이블 위치와 비트조합
 00, 01 열의 CL 영역 (Control Left) - 0x00-0x1f
 02-07 열까지의 GL 영역 (Graphic Left) - 0x20-0x7f
 08-09 열의 CR 영역 (Control Right) - 0x80-0x9f
 10-15 열까지의 GR 영역 (Graphic Right) - 0xA0-0xff
특수문자 (7bit 와 8bit 에 모두 적용 )
 01/11( 열 / 행 ) 에 ESCAPE ( 간단히 ESC 라고 표시 )
 02/00 에 SPACE ( 간단히 SP 라고 표시 )
 07/15 에 DELETE ( 간단히 DEL 이라고 표시 )
CL,CR 은 제어기능을 위한 영역
으로 Locking Shift( 한 / 영 키 )
와 같이 자판의 형태를 상호간에
맞추는 용도와 구조를 나타내는
데도 사용되어 진다 .
1Byte GL 영역 0x21 ~ 0x7E 영
역은 반드시 ASCII 코드가 고정
되어 있어야 함
2byte 의 경우는 자유
ISO/IEC 2022 기반 인코딩 구조
용어 정리
Locking Shift = 키보드 자판의 한
영 키 ( 헤드에 코드요소를 변경 )
Single Shift = 키보드의 Shift 키
한글자만 코드요소 변경
8bit 코드 테이블에는 총
4 개의 코드 요소 가능 -
8bit 코드테이블 GL,GR
존재 Locking Shift 를 이
용하면 X2 4 개의 경우의
수 존재
코드요소
• 7 비트 - GL 1 개 헤드 , 8 비트 - GL/GR 두개의 헤드
• 자판위치는 코드테이블
• G0~G3( 문자셋 ) 는 헤드에 끼울 수 있는 망치로서 어떤 헤드든지 4 개 종류의 망치를 끼울수 있다 .
• 이 망치 끝에는 활자가 새겨져 있는데 영어 , 한글 등의 글자를 망치 끝에 새길 수 있다 .
ISO/IEC 2022 기반 인코딩 구조
Control Function
C0, C1 코드요소 (code elements) : CL(control left), CR(contron
right) 영역에 호출 (invocation)
7 비트의 경우
 CL 영역만 존재 : C1 코드 요소 (code elements) 는 escape
sequence 를 통해 7 비트 코드로 표시
8 비트 코드의 경우
 CASE 1: C0 는 CL ,C1 는 CR COC1 은 항상 CR 영역에 호출된
다 .
 CASE 2: C1 코드 요소 (code elements) 는 escape sequence 를 통
해 7 비트 코드로 표시
기능
 Gn 코드 요소를 호출하기 위한 locking shifts
 전체 코드요소를 호출하지 않고 개별문자만 선택할 수 있는 single
shifts
 코드구조 (code structure) 공표 (announcement) : C1 이 esc 에 의
해 코드화 되었는지 .
한글 인코딩 – 문자셋 표준화 역사
연도 규격 번호 내용
1974 년 KSC 5601-1974 한글 자모 51 자에 코드 부여
1977 년 KSC 5714-1977 한자 7,200 자에 코드 부여
1982 년 KSC 5601-1982
KSC 5619-1982
2 바이트 조합형
완성형 ( 한글 1,316 자 , 한자 1,692 자 )
1987 년 KSC 5601-1987 완성형 ( 한글 2,350 자 , 한자 4,888 자 ), ISO 2022 규
격에 준함 )
1991 년 KSC 5601-1991 완성형 확장 글자 ( 한글 1,930 자 , 옛한글 1,673 자 ,
한자 2,865 자 )(KS C5601-1987 을 보충하기 위하여
추가로 수집한 글자들 )
1992 년 KSC 5601-1992 2 바이트 조합형을 완성형 한글과 함께 복수표준화
1995 년 KSC 5700-1995 완성형 한글 11,172 자 , 조합형 자모 334 자 및
23,274 자의 한자 ( 당시 유니코드 표준을 국가표준화한
것임 )
1998 년 ( 최종개정 ) 신규격번호 KS X 1001(KS C 5601-1987 완성형의 신
규격 )
2001 년 ( 최종개정 ) 신규격번호 KS X 1001(KS C 5657-1991 의 신규격 )
2002 년 ( 최종개정 ) KS X 1005-1 (KS C 5700-1995( 유니코드 )
의 신규격 )
• KSC 5601-1987, KSC 5601-1992 가 현재 공동 표준 , KS X 1005-1 은 ISO10646-1 에 등록된
유니코드 한글을 그대로 채용
한글 인코딩 - KS x 1001 = KS C 5601-1987 (94x94 문자
셋 )
KSx1001 구조 (ISO2022 규격준수 )
ISO2022 8 비트 코드테이블의 GR 영역에 한
글 호출
2 Byte 구조 , 즉 코드 테이블이 2 개 (GR 영
역만으로 = 94X94 코드조합 가능 ( 총 8836
문자 지정 가능 )
고어나 방언은 제외 가나다 순으로 많이 쓰이
는 글자만 배열 ( 모든 한글 조합 불가 )
표현방식
First byte = 행 , Second byte = 열
First byte 는 왼쪽 GR 영역 , Second byte 는
오른쪽 GR 영역
Rows : 94 개의 Rows 가 존재 ,First byte 한
영역에 대해 94 개의 오른쪽 GR 영역을 통째
로 일컫는 말
 A1 x 94 개의 오른쪽 GR 영역을 rows 1 이라
고 표현
94x94 문자셋 (GR 영역 )
Adobe Acrobat
Document
KSC 5601 Table
한글 인코딩 - KS x 1001 = KS C 5601-1987 (94x94 문
자셋 )
각 행별 설명
Row 1: 94 개 symbols
Row 2: 69 개 abbreviations and symbols
Row 3: 94 full-width KS C 5636-1993 characters (ASCII)
……
Row 16-40: 2,350 완성형
Row 42-93: 4,888 한자
예제 )
첨부된 파일 KS C 5601 의 테이블에서 ‘가’를 보면
 First Byte( 행 ) 0100001b
 Second Byte( 열 ) 0110000b
 KS C 5601 은 GRGR 조합의 8 비트 코드
 GR 영역에 MSB = 1 -> First Byte= 10100001b Second Byte = 10110000b => 0xB0A1.
왜 테이블에는 7bit 로 표현되어 있는가 ?
 ISO 2022 규격은 7bit 통신방식에서도 정의 되어있다 .
 Escape Sequence, invocation….
 현재로서는 많이 사용되지 않는다 . (E-mail, usenet)
 자세한 사항은 문서 참조
한글 인코딩 - KS x 1003 = KS C 5636 ( 문자셋 )
명칭
한국 산업규격 – 로마자 문자 집합
정식명칭 - 정보 교환용 부호 ( 로마 문자 )
ASCII 및 ISO/IEC 646 에 기반한 7 비트 문자 집합
ASCII 와의 차이점
역슬래쉬 (,0x5C) 자리에 원화 기호 (₩, U+20A9) 가 들어 있는
것 외에는 차이 없음 .
한글 인코딩 – EUC-KR
EUC-KR 코드 테이블 (ISO 2022 구조 )
GL (Graphic Left : 0x20, 0x7e) - ISO 646:IRV (US-ASCII) / ISO
646:KR (KS X 1003)
GR (Graphic Right: 0xa0,0xfe) - KS X 1001:1998(KSC 5601)
KS x 1003 KS x 1001
KS x 1003 KS x 1001
CP949 확장
CP949 확장
한글 인코딩 – CP949
코드 페이지 949(CP949)
MS 윈도우에서 사용되어지는 문자인코딩 방식 .
EUC-KR 에 하위 호환성을 가짐
ISO 2022 규격을 준수 ( 일본 - CP932, 중국 - CP950)
KS X 1001 에 없는 8822 자의 현대 한글을 가나다 순서대로 배당
한다 . (‘ 갘’ ,’ 뷁’ )
일본어 인코딩
일본은 동아시아권 나라 중 가장 먼저 자국 언어 정보처리
를 시작
대만 , 중국 , 한국 모두가 일본의 문자셋에 영향을 받음
부호의 배치 , 키릴 / 그리스 자모의 배치
일본 문자셋 표준 - JIS = Japanese Industrial Standard
일본어 인코딩 - JIS X 0201
8bit 문자셋 (ISO 2022 문자셋 )
MSB 가 0 인 GL 영역 => ASCII
MSB 가 1 인 GR 영역 => 반각 카타가나
70 년대는 멀티바이트 문자셋 표준화가 되어있지 않음
GR 영역은 JIS x 0208 과 겹치므로 많이 사용되지 않음 .
SHIFT-JIS 와 같은 이상한 Encoding 을 만든 원인제공
일본어 인코딩 -JIS X 0208 (94x94 문자
셋 )
명칭
7 비트 및 8 비트의 2 바이트 정보 교환용 부호화 한자 집합 "( 일
본어 : 7 ビット及び 8 ビットの 2 バイト情報交換用符号化漢字集
合 )
옛명칭 : JIS C 6226
역사
1978 년 제정 -> 1997 년 개정
내용
히라가나 , 가타카나 , 한자 포함
일본에서 가장 널리 사용되는 문자셋
한중일 중 최초의 2 바이트 문자셋 -> 한 , 중에 많은 영향을 끼침
 행 단위의 기호 , 특수문자 위치 동일
일본어 인코딩 -JIS X 0208 (94x94)
구조 (ISO 2022 8bit 규격 준수 )
ASCII 1 바이트 (GL = G0)
2 바이트 구조 , (GL 영역에 맵핑 [CCS] GL=G1) [Single shift]
GL 영역 각 행들 (= GL 영역의 첫째 바이트 x 94 문자 )
 Row 1-8(0x21 ~ 0x28): 한자가 아닌 문자들 ( 문장 부호 , 그림 문
자 , 히라가나 , 가타카나 , 그리스 문자 , 키릴 문자 등 )
 Row16-31(0x30 ~ 0x4F): 제 1 수준 한자 영역 ( 발음 순서대로 , 가
장 많이 사용되는 2965 자를 추림 )
 Row32-68(0x50 ~ 0x74): 제 2 수준 한자 영역 ( 발음 순서대로 , 그
다음 많이 사용되는 3390 자를 추림 )
일본어 인코딩 – JIS X 0212
JIS X 0212
94x94 문자셋 GL 영역
보조한자 5801 자를 할당
일반 PC 사용자는 사용 X
유닉스 유저 몇몇 학술 상용데이터 베이스에서 EUC-JP
를 통해 지원
일본어 인코딩 – JIS X 0213 문자셋
JIS x 0208 의 확장판
정식명칭 : 정보교환을 위한 7bit,8bit 2 바이트 부호화 확장형 Kanji
문자셋 (Kanji = 일본에서 사용되는 한문 )
구조
2 Plane[2 개의 94x94 문자셋 ] (G0,G1 코드요소 ) – SHIFT LOCKING
필요
Plane 1 : JISx0208 (Kanji sets Level 1~3) 과 non-Kanji Character 총
8836 문자
Plane 2 : Kanji sets Level 4
총 문자수는 11,233 자
EUC-JIS-2004, ISO2022-2004, SHIFT-JIS-2004 에서 지원
일본어 인코딩 – EUC-JP
인코딩 비트 : 8 bit
ISO/IEC 2022 규격 준수
구조
4 개의 문자셋 (Plane
G0,G1,G2,G3) 이용
CR 영역의 0x8e 와 0x8f 의
SS(Single-Shift) 코드 이용
1/2/3 바이트 가변폭 인코딩
화면 출력과 코드 너비가 다른
인코딩
CL(Control-Left): 0x00-0x1f
GL(Graphic-Left): 0x20-0x7f
CR(Control-Right): 0x80-0x9f
GR(Graphic-Right): 0xA0-0xff
문자셋 코드 설명
ASCII [0x20-0x7f] 아스키는 항상 GL 에 배치됩니다 .
JIS X 0201 0x8e [0xa1-0xdf] JIS X 0201 중 반각 카타카나 부분은 앞
에 0x8e 를 쓴 다음에 씁니다 .
(GR)
JIS X 0208 [0xa1-0xfe] [0xa1-0xfe] JIS X 0208 문자들은 각각 MSB 를 세
팅해서 그냥 씁니다 . (GR)
JIS X 0212 0x8f [0xa1-0xfe] [0xa1-0xfe] JIS X 02012 문자들은 0x8f 를 앞에 쓴
다음에 MSB 를 세팅해서 씁니다 .
(GR)
일본어 인코딩 – SHIFT-JIS
탄생배경
1980 년대 JIS X 0201(GL ASCII GR 가타카나 할당 [CCS]).
한문 표시 하드웨어의 등장 . 그에 걸맞는 인코딩의 필요성 도래
인코딩 구조
ISO 2022 확장 방법으로는 하위호환성을 유지하면 JIS X 0208
을 지원 불가
JIS X 0201 에서 사용하고 있지 않던 영역 (0x81~0x9F[CR],
0xE0~0xEF[GR] ) 에 JIS X 0208 을 별도의 계산 과정으로 할당 .
(Seconde Byte 는 GL 영역도 사용 )
Shift_JIS 0xF0 ~ 0xFF(GR) 까지의 첫 바이트에는 아무 글자도 할
당되어 있지 않음 -> 추가를 통해 CP932 탄생
De Facto standard
일본어 인코딩 – SHIFT-JIS
인코딩 방법
JIS x 0213 은 그대로 사용
JIS x 0208 의 경우
 2Byte 의 JIS 문자코드 j1,j2 로부터 Shift_JIS byte s1s2 를 변환하
는 과정은 아래 식 과 같습니다 .
중국어 인코딩 – GB2312 (94x94 문자셋 )
Guojia Biaozhun 2312
1980 년 제정된 간체 국가표준 (ISO 2022 규격 )
GBK,GB18030 이 제정되었지만 현재도 널리 사용
6763 개의 한자와 기호 , 히라가나 , 카타카나 , Pinyin( 병음입력
- 알파벳 ) 등을 포함해서 모두 7445 글자로 구성
동일한 구조의 번체표준 GB/T12345 ([ 예 ] 코드포인트 39-7A
GB2312 => 囯 , GB/T12345 => 國 )
99.75% 의 실용한문의 입력을 커버
중국어 인코딩 – EUC-CN
EUC-CN 구조
GB2312ASCII
• 1-9 Row 는 구두점과 스페셜 문자들로 구성되어 있습니다 .
• 16-55 Row 는 한문이 Pinying( 병음입력 ) 에 따라 배열되어있습니다 ( 읽기 )
• 56-87 Row 는 한문이 획수에 따라 배열되어 있습니다 .
• 10-15,88-94 는 아직 할당되어 있지 않습니다
중국어 인코딩 - 기타문자셋
GB7589
보조문자셋 GB2 라고도 불림
모두 7237 자의 한자 포함
유니코드에 포함됨
번체 GB/T13131
GB7590
보조 문자셋 , GB4 라고도 불림
모두 7039 자의 한자가 포함
유니코드에 포함됨
GB/T13132 입니다 .
중국어 인코딩 – GBK (CP936)
생성 유래
GB2312 의 확장판 . GBK 에 ‘ K’ 는 Extenstion 을 의미
Unicode 2.1 에 한중일 , 대만에서 사용되는 20,902 문자를 포함
하게 되었고 이에 따라 중국은 GB13000.1-93 를 제정하였다
( 유니코드의 중국어판과 동일 )
구조
GB13000.1-93 을 GB2312 에서 사용하지 않는 코드 포인트에 넣
음으로 GB2312 에 대한 상위호환성을 유지
국제표준은 아니나 Win95 에서 CP936 으로 널리 사용되면서
De facto Standard
중국어 인코딩 – GBK (CP936)
CP936 인코딩
규격은 ISO 2022 를 따름
한 바이트표현은 ASCII 00-7F 영역
GBK 인코딩
 첫 번째 바이트의 영역은 81-FE (CR,GR 영역 )
 두 번째 바이트의 영역은 40-FE (GL,CR,GR 영역 )
GBK Encoding Ranges
range byte 1 byte 2 code points characters
Level GBK/1 A1–A9 A1–FE 846 717
Level GBK/2 B0–F7 A1–FE 6,768 6,763
Level GBK/3 81–A0 40–FE except 7F 6,080 6,080
Level GBK/4 AA–FE 40–A0 except 7F 8,160 8,160
Level GBK/5 A8–A9 40–A0 except 7F 192 166
user-defined AA–AF A1–FE 564
user-defined F8–FE A1–FE 658
user-defined A1–A7 40–A0 except 7F 672
total: 23,940 21,886
중국어 인코딩 – GB18030
GB2312,GBK 를 대체하기 위한 중국의 공식 문자셋
강제적으로 표준으로 정함
중국 내 모든 OS 는 모두 지원
구성
GBK,GB2312 와의 완벽한 하위 호환성 유지 ,
가변길이 인코딩
 GBK 에 추가적으로 유니코드를 순서대로 정렬 추가
 110 만 개의 모든 유니코드 (0~16Plane) 에 대해 변환 가능
구조
Single-byte: 00-80 (*) (ASCII+ 유로기호 )
Two-byte: 81-fe | 40-7e, 80-fe (GBK)
Four-byte: 81-fe | 30-39 | 81-fe | 30-39 (GB13000.1)
 4 바이트일 경우 1,587,600 (126*10*126*10) 개의 문자를 맵핑 가능 ( 유니코
드 1,112,046 자 )
유니코드
목적
현존하는 문자 인코딩 방법들을 모두 유니코드로 교체
 기존의 인코딩들은 그 규모나 범위 면에서 한정 , 다국어 환경에서는 서로 호
환되지 않는 문제점
 다양한 문자 집합들을 통합 운영체제 , 최신 소프웨어 기술에 다국어 환경에서
호환 가능하도록 한다 .
역사
유니코드 컨소시엄에서는 유니코드 표준과 ISO/IEC 10646 을 발전시키
기 위해 ISO 와 공동 작업
ISO/IEC 10646-1:1993 ≈ Unicode 1.1
ISO/IEC 10646-1:2000 ≈ Unicode 3.0
ISO/IEC 10646-2:2001 ≈ Unicode 3.2
ISO/IEC 10646-3:2003 ≈ Unicode 4.0
ISO 10646 과 Unicode 의 대응관계
ISO10646 구조 (≈ 유니코드 )
기본언어판 , BMP
BMP 는 Basic Mulitilingual Plane 의 약자입니다 . 유니코드의 첫
65,536 개의 코드를 의미합니다 .
언어판 , Plane
256x256 즉 65,536 개씩의 코드 묶음을 이릅니다 . 유니코드에서는 현
재 17 개의 언어판을 사용할 수 있습니다 . 모두 그룹 00 에 포함됩니다
.
언어판 그룹 , Group
1 언어판 그룹 256 Plane
유니코드의 17 개 언어판은 Group 00 포함
유니코드는 17 개의 언어판에 한정
ISO 10646 표준 (UCS-4) 에서는 모두 128 개의 언어판 그룹이 정의
 1 Plane = 65,536 code points
 1 Group = 256 planes = 256x65,536 = 16,777,216 code points
 UCS-4 = 128 groups = 128x16,777,216 = 2,147,483,648 code points
유니코드의 구조
17 개의 언어판으로 구성
1 개의 기본언어판 (BMP) 와 16 개의 보충언어판
각 언어판은 216
, 즉 65,536 개의 문자로 구성 (256x256 언어판 )
17x65,536=114112-2048 ( 대행코드영역 )=1112064 개의 문자
언어판 UCS4 영역 이름 문자수
0 (0x00) 0x00000000 - 0x0000FFFF 기본언어판 (BMP, Basic Multilingual
Plane)
49,196
1 (0x01) 0x00010000 - 0x0001FFFF 보충언어판 (SMP, Supplementary
Multilingual
Plane for scripts and symbols)
1,594
2 (0x02) 0x00020000 - 0x0002FFFF 보충표의문자판 (SIP, Supplementary
Ideographic Plane)
43,253
3 ~ 13
(0x03~D)
0x00030000 - 0x000DFFFF 아직 사용하지 않음 0
14 (0x0D) 0x000E0000 - 0x000EFFFF 특별보충판 (SPP, Supplementary
Special-purpose Plane)
97
15 ~ 16
(0x0F~0x10)
0x000F0000 - 0x0010FFFF 개인사용목적으로 지정 (Private Use) 0
합계 94,140
언어판 1,2 는
3.1 버전에서 추
가 주로 고대문자
, 음표
ISO10646 (≈ 유니코드 ) 인코딩
UCS-2: Universal Character Set 2
Universal Multipe-Octet Coded Character Set 2
ISO10646 의 규격
오직 BMP 의 65,536 코드만을 정의 , 2 바이트로 표현
유니코드를 순서대로 표현 . 2byte=[65536]
UCS-4: Universal Character Set 4
Universal Multipe-Octet Coded Character Set 4
ISO10646 의 규격
128 개의 언어판 그룹 ( 언어판 그룹 =256 언어판 )
128*(256 언어판 ) = 32,768 언어판을 정의
대략 231
= 2,147,483,648 문자 표현
유니코드 전체를 포괄 .
ISO10646 (≈ 유니코드 ) 인코딩 – UTF-8
배경
완벽한 유니코드 인코딩은 UTF-16
 이 인코딩은 16 비트 단위로 하나의 문자를 표현
 UTF-16 을 기존의 Char 형에서 문자열로 취급할 때 중간에
(NULL,0) 이 있을 수 있다 . ( 문자열의 끝을 알려 버리는 문제 발생 )
 대안으로 문자열 중간에 Null 이 나오지 않도록 고안
구조
유니코드 문자는 1 바이트에서 4 바이트까지 가변적으로 인코딩
 BMP 에 위치한 문자는 1~3 바이트로 인코딩
 나머지 16 개의 보충언어판에 위치한 문자는 4 바이트로 인코딩
ISO10646 (≈ 유니코드 ) 인코딩 – UTF-8
UCS-4 UTF-8
0x00000000 - 0x0000007F 0xxxxxxx
0x00000080 - 0x000007FF 110xxxxx 10xxxxxx
0x00000800 - 0x0000FFFF 1110xxxx 10xxxxxx 10xxxxxx
0x00010000 - 0x001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0x00200000 - 0x03FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x04000000 - 0x7FFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
UTF-8 과 UCS-4 간의 변환 규칙
여기까지가 UTF-8
인코딩 언어판 17
개까지에 대해서만
Code Points 1st Byte 2nd Byte 3rd Byte 4th Byte
U+0000 ~ U+007F 00 ~ 7F
U+0080 ~ U+07FF C2 ~ DF 80 ~ BF
U+0800 ~ U+0FFF E0 A0 ~ BF 80 ~ BF
U+1000 ~ U+CFFF E1 ~ EC 80 ~ BF 80 ~ BF
U+D000 ~ U+D7FF ED 80 ~ 9F 80 ~ BF
U+D800 ~ U+DFFF ill-formed (surrogate 부분이므로 인코딩되어서는 안됨 )
U+E000 ~ U+FFFF EE ~ EF 80 ~ BF 80 ~ BF
U+10000 ~ U+3FFFF F0 90 ~ BF 80 ~ BF 80 ~ BF
U+40000 ~ U+FFFFF F1 ~ F3 80 ~ BF 80 ~ BF 80 ~ BF
U+100000 ~ U+10FFFF F4 80 ~ 8F 80 ~ BF 80 ~ BF
올바른 UTF-8 바이트 배열
ISO10646 (≈ 유니코드 ) 인코딩 – UTF-16
특징
유니코드 영역만을 이용한 인코딩
가변 인코딩 : BMP= 2byte 표현 , 보충언어판 =4byte 표현
0~16 개의 모든 유니코드 언어판을 표현 가능
 대행문자 영역 2,048 개를 제외한 63,488 개의 코드 표현 (BMP –
0Plane)
 대행문자 영역 2 개의 쌍을 이용하여 16 개의 보충언어판 표현 가능
( 즉 17 개의 모든 유니코드 언어판을 표현 가능 )
높은 코드 효율로 유니코드 표준에서 지원하는 17 개의 언어판에
대해서만 인코딩 가능
ISO10646 (≈ 유니코드 ) 인코딩 – UTF-16
기본언어판 (BMP) 2byte 로 표현
대행코드 조합으로 UTF-16 코드값 생성 공식 (4byte)
CodeValue = (HighSurrogate - 0xD800) x
(LowSurrogate - 0xDC00) + 0x10000
 CodeValue 는 UTF-32 코드값
 상위대행코드 영역의 시작점 : 0xD800
 하위대행코드 영역의 시작점 : 0xDC00
 보충언어판은 0x10000 부터 시작 (+0x10000 의 이유 )
 CodeValue 는 U+10000 ~ U+10FFFF 까지 1048576 개의 값을 가
질 수 있게 됩니다 .
 상위대행코드가 나오면 반드시 하위대행코드가 연달아 기술되어야
합니다 . (2byte(BMP 영역 ), 4byte( 보충언어판영역 ) 을 구분 가능 )
ISO10646 (≈ 유니코드 ) 인코딩 – UTF-32
UTF-32 는 32 비트 (4byte) 로 모든 유니코드 문자를 표현
고정길이 인코딩 4byte
UCS-4 차이점 !
17 개의 언어판만을 대상으로 하는 UCS-4 의 부분집합
인코딩 영역
 0x00000000 ~ 0x0010FFFF ( 영역만으로 제한 )
 제한을 풀면 UCS-4 와 동일
ISO10646 (≈ 유니코드 ) 인코딩 정리
인코딩 그룹 언어판 문자수 ( 표준 ) 문자수 ( 이론적 )
UCS-2 0 0(BMP) 216
=65,536 216
=65,536
UCS-4 0 ~ 127 0 ~ 32,767 231
=2,147,483,648 231
=2,147,483,648
UTF-8 0 0 ~ 16 17*216
-211
=1,112,064 231
=2,147,483,648
UTF-16 0 0 ~ 16 17*216
-211
=1,112,064 17*216
-211
=1,112,064
UTF-32 0 0 ~ 16 17*216
-211
=1,112,064 231
=2,147,483,648
각 인코딩별 표현 가능한 문자 수
인코딩 SUMMARY
ASCII
National Variant of ISO 646
National Variant of ISO 8859
ISO/IEC 2022
ISO 2022 구조
한국 KSC5601,CP949, EUC-KR
중국 GB2312, GBK
일본 JIS x0201,JIS x 0208 ,JISx0212, Shift-JIS, EUC-JP
UNICODE ≈ ISO10646
인코딩 방식
 UTF-16, UTF-8, UTF-32, UCS-2, UCS-4 의 차이점 .
Application 별 인코딩
CD Joliet 파일시스템 = UCS-2
MP3 ID3 V2 Tag = UTF-8
OS File System
FAT,NTFS - UTF-16
HFS+ (MAC OS:Hierarchical File System) – UTF 8
Ext3(Linux) - UTF, EUC 중 선택가능
LCD 비트맵 폰트 출력과정 – EUC KR
GL : ASCII
GR : KSC 5601
Bitmap Array Order 0 1 2 3 4
KSC5601 Code(2byte) 0xA1A2 0xA1A3 0xA1A4 0xA1A5 0xA1A6
KSC5601 폰트 (16x16)
、 。 · ‥ …
KSC 5601 폰트의 경
우 KSC 5601 코드순
서대로 정렬되어 있으
므로 맵핑테이블 필
요 없이 OFFSET
만 정하면 된다 .
파일시스템
EUC-KR 인코딩
KSC 5601 to KSC
5601 비트맵 폰트
맵핑 (16x16)
오프셋
폰트 출력
EUC-KR 폰트 출력
ASCII to ASCII
비트맵 폰트
맵핑 (8x16)
오프셋
LCD 비트맵 폰트 출력과정 – UTF-8
파일시스템
UTF-8 인코딩
Decode UNICODE
KSC5601코드 to
폰트 변환 맵핑
오프셋 설정
UNICODE to
KSC5601 맵핑
테이블
폰트 출력
파일시스템
UTF-8 인코딩
Decode UNICODE
UNICODE to 폰트
맵핑 오프셋
폰트 출력
UTF 8 폰트 출력
UTF 8 폰트 출력 UNICODE 폰트 이용시
Bitmap Array Order 0 1 2 3 4
KSC5601 Code(2byte) 0xA1A2 0xA1A3 0xA1A4 0xA1A5 0xA1A6
KSC5601 폰트 (16x16)
、 。 · ‥ …
UNICODE 0x00B4 0xFF5E 0x02C7 0x02C7 0x02D8
유니코드 폰트 이
용시 변환 과정
생략
감사합니다 .

More Related Content

What's hot

컴퓨터개론08
컴퓨터개론08컴퓨터개론08
컴퓨터개론08
Edward Hwang
 
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
The Linux Foundation
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
Houcheng Lin
 
Linux Device Tree
Linux Device TreeLinux Device Tree
Linux Device Tree
艾鍗科技
 
Arm v8 instruction overview android 64 bit briefing
Arm v8 instruction overview android 64 bit briefingArm v8 instruction overview android 64 bit briefing
Arm v8 instruction overview android 64 bit briefing
Merck Hung
 
Building Embedded Linux Systems Introduction
Building Embedded Linux Systems IntroductionBuilding Embedded Linux Systems Introduction
Building Embedded Linux Systems Introduction
Sherif Mousa
 
Linux Internals - Part III
Linux Internals - Part IIILinux Internals - Part III
Linux Internals - Part III
Emertxe Information Technologies Pvt Ltd
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Linux Kernel Programming
Linux Kernel ProgrammingLinux Kernel Programming
Linux Kernel ProgrammingNalin Sharma
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequenceHoucheng Lin
 
How To Build Android for ARM Chip boards
How To Build Android for ARM Chip boardsHow To Build Android for ARM Chip boards
BusyBox for Embedded Linux
BusyBox for Embedded LinuxBusyBox for Embedded Linux
BusyBox for Embedded Linux
Emertxe Information Technologies Pvt Ltd
 
I2c drivers
I2c driversI2c drivers
I2c drivers
pradeep_tewani
 
I2C Subsystem In Linux-2.6.24
I2C Subsystem In Linux-2.6.24I2C Subsystem In Linux-2.6.24
I2C Subsystem In Linux-2.6.24Varun Mahajan
 
Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0
Emertxe Information Technologies Pvt Ltd
 
Yocto Project introduction
Yocto Project introductionYocto Project introduction
Yocto Project introduction
Yi-Hsiu Hsu
 
What is Bootloader???
What is Bootloader???What is Bootloader???
What is Bootloader???
Dinesh Damodar
 
Virtualization Support in ARMv8+
Virtualization Support in ARMv8+Virtualization Support in ARMv8+
Virtualization Support in ARMv8+
Aananth C N
 
Introduction to yocto
Introduction to yoctoIntroduction to yocto
Introduction to yocto
Alex Gonzalez
 
A practical guide to buildroot
A practical guide to buildrootA practical guide to buildroot
A practical guide to buildroot
Emertxe Information Technologies Pvt Ltd
 

What's hot (20)

컴퓨터개론08
컴퓨터개론08컴퓨터개론08
컴퓨터개론08
 
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
 
Linux Device Tree
Linux Device TreeLinux Device Tree
Linux Device Tree
 
Arm v8 instruction overview android 64 bit briefing
Arm v8 instruction overview android 64 bit briefingArm v8 instruction overview android 64 bit briefing
Arm v8 instruction overview android 64 bit briefing
 
Building Embedded Linux Systems Introduction
Building Embedded Linux Systems IntroductionBuilding Embedded Linux Systems Introduction
Building Embedded Linux Systems Introduction
 
Linux Internals - Part III
Linux Internals - Part IIILinux Internals - Part III
Linux Internals - Part III
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 
Linux Kernel Programming
Linux Kernel ProgrammingLinux Kernel Programming
Linux Kernel Programming
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequence
 
How To Build Android for ARM Chip boards
How To Build Android for ARM Chip boardsHow To Build Android for ARM Chip boards
How To Build Android for ARM Chip boards
 
BusyBox for Embedded Linux
BusyBox for Embedded LinuxBusyBox for Embedded Linux
BusyBox for Embedded Linux
 
I2c drivers
I2c driversI2c drivers
I2c drivers
 
I2C Subsystem In Linux-2.6.24
I2C Subsystem In Linux-2.6.24I2C Subsystem In Linux-2.6.24
I2C Subsystem In Linux-2.6.24
 
Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0
 
Yocto Project introduction
Yocto Project introductionYocto Project introduction
Yocto Project introduction
 
What is Bootloader???
What is Bootloader???What is Bootloader???
What is Bootloader???
 
Virtualization Support in ARMv8+
Virtualization Support in ARMv8+Virtualization Support in ARMv8+
Virtualization Support in ARMv8+
 
Introduction to yocto
Introduction to yoctoIntroduction to yocto
Introduction to yocto
 
A practical guide to buildroot
A practical guide to buildrootA practical guide to buildroot
A practical guide to buildroot
 

Similar to 문자셋과 인코딩

Unicode100
Unicode100Unicode100
Unicode100
Ryan Park
 
유니코드 세미나
유니코드 세미나유니코드 세미나
유니코드 세미나
YoungGyu Chun
 
Unicode 이해하기
Unicode 이해하기Unicode 이해하기
Unicode 이해하기
Ryan Park
 
Unicode
UnicodeUnicode
Unicode
Ryan Park
 
Unicode
UnicodeUnicode
Unicode
Ryan Park
 
문자 인코딩과 유니코드
문자 인코딩과 유니코드문자 인코딩과 유니코드
문자 인코딩과 유니코드
Yongsu Park
 
Unicode
UnicodeUnicode
Unicode
Ryan Park
 
인코딩 발표
인코딩 발표인코딩 발표
인코딩 발표
MinJeong Kim
 
문자열 이상재
문자열 이상재문자열 이상재
문자열 이상재
SangJaeLee_90
 
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)
유익아카데미
 

Similar to 문자셋과 인코딩 (11)

Unicode100
Unicode100Unicode100
Unicode100
 
유니코드 세미나
유니코드 세미나유니코드 세미나
유니코드 세미나
 
Unicode 이해하기
Unicode 이해하기Unicode 이해하기
Unicode 이해하기
 
Unicode
UnicodeUnicode
Unicode
 
Unicode
UnicodeUnicode
Unicode
 
문자 인코딩과 유니코드
문자 인코딩과 유니코드문자 인코딩과 유니코드
문자 인코딩과 유니코드
 
Unicode
UnicodeUnicode
Unicode
 
인코딩 발표
인코딩 발표인코딩 발표
인코딩 발표
 
문자코드
문자코드문자코드
문자코드
 
문자열 이상재
문자열 이상재문자열 이상재
문자열 이상재
 
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)
코딩인카페 C&JAVA 기초과정 컴퓨터와 프로그래밍 소개(3)
 

문자셋과 인코딩

  • 1. 문자셋과 인코딩문자셋과 인코딩 SW 개발팀 정재훈 2007.3.26
  • 2. 목차 문자셋과 문자인코딩의 정의 ASCII 란 ? ISO/IEC 2022 (EUC 인코딩 ,CCS) 한글 인코딩 일본어 인코딩 중국어 인코딩 유니코드 파일시스템과 문자 인코딩
  • 3. 문자셋과 문자인코딩의 정의 문자셋 ( Charset ) 정보를 표현하기 위한 글자들의 집합 집합 안의 문자들에 음수가 아닌 정수들을 배정한 것을 부 호화된 문자 집합 (coded character set, CCS ) 문자 집합은 ASCII 와 같이 더 이상의 문자가 추가될 수 없기도 하고 , 유니코드와 같이 문자가 계속 추가될 수 있기도 하다 . 문자인코딩 ( Character Encoding ) 문자들의 집합을 컴퓨터에서 저장하거나 통신에 사용할 목적으로 부호화하는 방법 특정한 문자 집합 안의 문자들을 컴퓨터 시스템에서 사용할 목적 으로 일정한 범위 안의 정수 ( 코드값 ) 들로 변환하는 방법이다 .
  • 4. ASCII 란 ? 정의 미국 정보 교환 표준 부호 (American Standard Code for Information Interchange) – Coded Character Set 1967 년에 표준으로 제정되어 1986 년에 마지막으로 개정 국제표준 ISO 646 (7bit Encoding)  ASCII 를 따르며 영어 숫자의 위치는 동일하게 하고 각 국가별로 조금씩 특수 기호들을 변환  한국 : KSC5636(KS x 1003) “” -> “” (ISO646-KR) ISO 8859 (8bit Encoding)  MSB bit0 = 표준 ASCII 코드와 동일  MSB bit1 = 각 나라별 필요코드 첨가  다양한 버전 (16 개 ) 이 존재 ex) ISO-8859 Part16(Latin10)- 동유럽국가
  • 5. ISO/IEC 8859 ISO 8859 -1 라틴 1 : 서유럽
  • 6. ISO/IEC 2022 ISO/IEC 2022 규격 – 7bit, 8bit 두 종류로 구성 7bit 규격은 7~80 년대 Usenet, E-mail 교환을 위한 규격이다 . ( 자세한 설명 생략 ) 관련 문자셋 (CJK 8bit, 2byte) 한국 : KSC-5601 ( 완성형 ), CP949 (CCS) 일본 : JIS x 0208, JIS x 0213 (CCS) 중국 : GB2312, GBK(CP939) (CCS) 관련 인코딩 한국 : EUC-KR (⊃ KSC5601, KSC5636[ASCII] ) 일본 : EUC-JP 중국 : EUC-CN
  • 7. ISO/IEC 2022 구조 코드 구조 7bit 코드테이블  16 행 8 열로 128(16*8) 개의 키 위치 (key position) 를 나열 8bit 코드테이블  16 행 16 열로 256(16*16) 개의 키 위치 (key position) 를 나열 7BIT 코드 테이 블 ISO2022 8 BIT 코드 테이블 GL 과 GR 에는 코드 요소를 넣 는다 .
  • 8. ISO/IEC 2022 구조 표기법 테이블 위치 표시법 : xx/yy (xx = 열 , yy = 행 ) 2 진법에서 xx 는 상위 4bit(8bit 기준 ), yy 는 하위 4bit 영역설명 테이블 위치와 비트조합  00, 01 열의 CL 영역 (Control Left) - 0x00-0x1f  02-07 열까지의 GL 영역 (Graphic Left) - 0x20-0x7f  08-09 열의 CR 영역 (Control Right) - 0x80-0x9f  10-15 열까지의 GR 영역 (Graphic Right) - 0xA0-0xff 특수문자 (7bit 와 8bit 에 모두 적용 )  01/11( 열 / 행 ) 에 ESCAPE ( 간단히 ESC 라고 표시 )  02/00 에 SPACE ( 간단히 SP 라고 표시 )  07/15 에 DELETE ( 간단히 DEL 이라고 표시 ) CL,CR 은 제어기능을 위한 영역 으로 Locking Shift( 한 / 영 키 ) 와 같이 자판의 형태를 상호간에 맞추는 용도와 구조를 나타내는 데도 사용되어 진다 . 1Byte GL 영역 0x21 ~ 0x7E 영 역은 반드시 ASCII 코드가 고정 되어 있어야 함 2byte 의 경우는 자유
  • 9. ISO/IEC 2022 기반 인코딩 구조 용어 정리 Locking Shift = 키보드 자판의 한 영 키 ( 헤드에 코드요소를 변경 ) Single Shift = 키보드의 Shift 키 한글자만 코드요소 변경 8bit 코드 테이블에는 총 4 개의 코드 요소 가능 - 8bit 코드테이블 GL,GR 존재 Locking Shift 를 이 용하면 X2 4 개의 경우의 수 존재 코드요소 • 7 비트 - GL 1 개 헤드 , 8 비트 - GL/GR 두개의 헤드 • 자판위치는 코드테이블 • G0~G3( 문자셋 ) 는 헤드에 끼울 수 있는 망치로서 어떤 헤드든지 4 개 종류의 망치를 끼울수 있다 . • 이 망치 끝에는 활자가 새겨져 있는데 영어 , 한글 등의 글자를 망치 끝에 새길 수 있다 .
  • 10. ISO/IEC 2022 기반 인코딩 구조 Control Function C0, C1 코드요소 (code elements) : CL(control left), CR(contron right) 영역에 호출 (invocation) 7 비트의 경우  CL 영역만 존재 : C1 코드 요소 (code elements) 는 escape sequence 를 통해 7 비트 코드로 표시 8 비트 코드의 경우  CASE 1: C0 는 CL ,C1 는 CR COC1 은 항상 CR 영역에 호출된 다 .  CASE 2: C1 코드 요소 (code elements) 는 escape sequence 를 통 해 7 비트 코드로 표시 기능  Gn 코드 요소를 호출하기 위한 locking shifts  전체 코드요소를 호출하지 않고 개별문자만 선택할 수 있는 single shifts  코드구조 (code structure) 공표 (announcement) : C1 이 esc 에 의 해 코드화 되었는지 .
  • 11. 한글 인코딩 – 문자셋 표준화 역사 연도 규격 번호 내용 1974 년 KSC 5601-1974 한글 자모 51 자에 코드 부여 1977 년 KSC 5714-1977 한자 7,200 자에 코드 부여 1982 년 KSC 5601-1982 KSC 5619-1982 2 바이트 조합형 완성형 ( 한글 1,316 자 , 한자 1,692 자 ) 1987 년 KSC 5601-1987 완성형 ( 한글 2,350 자 , 한자 4,888 자 ), ISO 2022 규 격에 준함 ) 1991 년 KSC 5601-1991 완성형 확장 글자 ( 한글 1,930 자 , 옛한글 1,673 자 , 한자 2,865 자 )(KS C5601-1987 을 보충하기 위하여 추가로 수집한 글자들 ) 1992 년 KSC 5601-1992 2 바이트 조합형을 완성형 한글과 함께 복수표준화 1995 년 KSC 5700-1995 완성형 한글 11,172 자 , 조합형 자모 334 자 및 23,274 자의 한자 ( 당시 유니코드 표준을 국가표준화한 것임 ) 1998 년 ( 최종개정 ) 신규격번호 KS X 1001(KS C 5601-1987 완성형의 신 규격 ) 2001 년 ( 최종개정 ) 신규격번호 KS X 1001(KS C 5657-1991 의 신규격 ) 2002 년 ( 최종개정 ) KS X 1005-1 (KS C 5700-1995( 유니코드 ) 의 신규격 ) • KSC 5601-1987, KSC 5601-1992 가 현재 공동 표준 , KS X 1005-1 은 ISO10646-1 에 등록된 유니코드 한글을 그대로 채용
  • 12. 한글 인코딩 - KS x 1001 = KS C 5601-1987 (94x94 문자 셋 ) KSx1001 구조 (ISO2022 규격준수 ) ISO2022 8 비트 코드테이블의 GR 영역에 한 글 호출 2 Byte 구조 , 즉 코드 테이블이 2 개 (GR 영 역만으로 = 94X94 코드조합 가능 ( 총 8836 문자 지정 가능 ) 고어나 방언은 제외 가나다 순으로 많이 쓰이 는 글자만 배열 ( 모든 한글 조합 불가 ) 표현방식 First byte = 행 , Second byte = 열 First byte 는 왼쪽 GR 영역 , Second byte 는 오른쪽 GR 영역 Rows : 94 개의 Rows 가 존재 ,First byte 한 영역에 대해 94 개의 오른쪽 GR 영역을 통째 로 일컫는 말  A1 x 94 개의 오른쪽 GR 영역을 rows 1 이라 고 표현 94x94 문자셋 (GR 영역 ) Adobe Acrobat Document KSC 5601 Table
  • 13. 한글 인코딩 - KS x 1001 = KS C 5601-1987 (94x94 문 자셋 ) 각 행별 설명 Row 1: 94 개 symbols Row 2: 69 개 abbreviations and symbols Row 3: 94 full-width KS C 5636-1993 characters (ASCII) …… Row 16-40: 2,350 완성형 Row 42-93: 4,888 한자 예제 ) 첨부된 파일 KS C 5601 의 테이블에서 ‘가’를 보면  First Byte( 행 ) 0100001b  Second Byte( 열 ) 0110000b  KS C 5601 은 GRGR 조합의 8 비트 코드  GR 영역에 MSB = 1 -> First Byte= 10100001b Second Byte = 10110000b => 0xB0A1. 왜 테이블에는 7bit 로 표현되어 있는가 ?  ISO 2022 규격은 7bit 통신방식에서도 정의 되어있다 .  Escape Sequence, invocation….  현재로서는 많이 사용되지 않는다 . (E-mail, usenet)  자세한 사항은 문서 참조
  • 14. 한글 인코딩 - KS x 1003 = KS C 5636 ( 문자셋 ) 명칭 한국 산업규격 – 로마자 문자 집합 정식명칭 - 정보 교환용 부호 ( 로마 문자 ) ASCII 및 ISO/IEC 646 에 기반한 7 비트 문자 집합 ASCII 와의 차이점 역슬래쉬 (,0x5C) 자리에 원화 기호 (₩, U+20A9) 가 들어 있는 것 외에는 차이 없음 .
  • 15. 한글 인코딩 – EUC-KR EUC-KR 코드 테이블 (ISO 2022 구조 ) GL (Graphic Left : 0x20, 0x7e) - ISO 646:IRV (US-ASCII) / ISO 646:KR (KS X 1003) GR (Graphic Right: 0xa0,0xfe) - KS X 1001:1998(KSC 5601) KS x 1003 KS x 1001
  • 16. KS x 1003 KS x 1001 CP949 확장 CP949 확장 한글 인코딩 – CP949 코드 페이지 949(CP949) MS 윈도우에서 사용되어지는 문자인코딩 방식 . EUC-KR 에 하위 호환성을 가짐 ISO 2022 규격을 준수 ( 일본 - CP932, 중국 - CP950) KS X 1001 에 없는 8822 자의 현대 한글을 가나다 순서대로 배당 한다 . (‘ 갘’ ,’ 뷁’ )
  • 17. 일본어 인코딩 일본은 동아시아권 나라 중 가장 먼저 자국 언어 정보처리 를 시작 대만 , 중국 , 한국 모두가 일본의 문자셋에 영향을 받음 부호의 배치 , 키릴 / 그리스 자모의 배치 일본 문자셋 표준 - JIS = Japanese Industrial Standard
  • 18. 일본어 인코딩 - JIS X 0201 8bit 문자셋 (ISO 2022 문자셋 ) MSB 가 0 인 GL 영역 => ASCII MSB 가 1 인 GR 영역 => 반각 카타가나 70 년대는 멀티바이트 문자셋 표준화가 되어있지 않음 GR 영역은 JIS x 0208 과 겹치므로 많이 사용되지 않음 . SHIFT-JIS 와 같은 이상한 Encoding 을 만든 원인제공
  • 19. 일본어 인코딩 -JIS X 0208 (94x94 문자 셋 ) 명칭 7 비트 및 8 비트의 2 바이트 정보 교환용 부호화 한자 집합 "( 일 본어 : 7 ビット及び 8 ビットの 2 バイト情報交換用符号化漢字集 合 ) 옛명칭 : JIS C 6226 역사 1978 년 제정 -> 1997 년 개정 내용 히라가나 , 가타카나 , 한자 포함 일본에서 가장 널리 사용되는 문자셋 한중일 중 최초의 2 바이트 문자셋 -> 한 , 중에 많은 영향을 끼침  행 단위의 기호 , 특수문자 위치 동일
  • 20. 일본어 인코딩 -JIS X 0208 (94x94) 구조 (ISO 2022 8bit 규격 준수 ) ASCII 1 바이트 (GL = G0) 2 바이트 구조 , (GL 영역에 맵핑 [CCS] GL=G1) [Single shift] GL 영역 각 행들 (= GL 영역의 첫째 바이트 x 94 문자 )  Row 1-8(0x21 ~ 0x28): 한자가 아닌 문자들 ( 문장 부호 , 그림 문 자 , 히라가나 , 가타카나 , 그리스 문자 , 키릴 문자 등 )  Row16-31(0x30 ~ 0x4F): 제 1 수준 한자 영역 ( 발음 순서대로 , 가 장 많이 사용되는 2965 자를 추림 )  Row32-68(0x50 ~ 0x74): 제 2 수준 한자 영역 ( 발음 순서대로 , 그 다음 많이 사용되는 3390 자를 추림 )
  • 21. 일본어 인코딩 – JIS X 0212 JIS X 0212 94x94 문자셋 GL 영역 보조한자 5801 자를 할당 일반 PC 사용자는 사용 X 유닉스 유저 몇몇 학술 상용데이터 베이스에서 EUC-JP 를 통해 지원
  • 22. 일본어 인코딩 – JIS X 0213 문자셋 JIS x 0208 의 확장판 정식명칭 : 정보교환을 위한 7bit,8bit 2 바이트 부호화 확장형 Kanji 문자셋 (Kanji = 일본에서 사용되는 한문 ) 구조 2 Plane[2 개의 94x94 문자셋 ] (G0,G1 코드요소 ) – SHIFT LOCKING 필요 Plane 1 : JISx0208 (Kanji sets Level 1~3) 과 non-Kanji Character 총 8836 문자 Plane 2 : Kanji sets Level 4 총 문자수는 11,233 자 EUC-JIS-2004, ISO2022-2004, SHIFT-JIS-2004 에서 지원
  • 23. 일본어 인코딩 – EUC-JP 인코딩 비트 : 8 bit ISO/IEC 2022 규격 준수 구조 4 개의 문자셋 (Plane G0,G1,G2,G3) 이용 CR 영역의 0x8e 와 0x8f 의 SS(Single-Shift) 코드 이용 1/2/3 바이트 가변폭 인코딩 화면 출력과 코드 너비가 다른 인코딩 CL(Control-Left): 0x00-0x1f GL(Graphic-Left): 0x20-0x7f CR(Control-Right): 0x80-0x9f GR(Graphic-Right): 0xA0-0xff 문자셋 코드 설명 ASCII [0x20-0x7f] 아스키는 항상 GL 에 배치됩니다 . JIS X 0201 0x8e [0xa1-0xdf] JIS X 0201 중 반각 카타카나 부분은 앞 에 0x8e 를 쓴 다음에 씁니다 . (GR) JIS X 0208 [0xa1-0xfe] [0xa1-0xfe] JIS X 0208 문자들은 각각 MSB 를 세 팅해서 그냥 씁니다 . (GR) JIS X 0212 0x8f [0xa1-0xfe] [0xa1-0xfe] JIS X 02012 문자들은 0x8f 를 앞에 쓴 다음에 MSB 를 세팅해서 씁니다 . (GR)
  • 24. 일본어 인코딩 – SHIFT-JIS 탄생배경 1980 년대 JIS X 0201(GL ASCII GR 가타카나 할당 [CCS]). 한문 표시 하드웨어의 등장 . 그에 걸맞는 인코딩의 필요성 도래 인코딩 구조 ISO 2022 확장 방법으로는 하위호환성을 유지하면 JIS X 0208 을 지원 불가 JIS X 0201 에서 사용하고 있지 않던 영역 (0x81~0x9F[CR], 0xE0~0xEF[GR] ) 에 JIS X 0208 을 별도의 계산 과정으로 할당 . (Seconde Byte 는 GL 영역도 사용 ) Shift_JIS 0xF0 ~ 0xFF(GR) 까지의 첫 바이트에는 아무 글자도 할 당되어 있지 않음 -> 추가를 통해 CP932 탄생 De Facto standard
  • 25. 일본어 인코딩 – SHIFT-JIS 인코딩 방법 JIS x 0213 은 그대로 사용 JIS x 0208 의 경우  2Byte 의 JIS 문자코드 j1,j2 로부터 Shift_JIS byte s1s2 를 변환하 는 과정은 아래 식 과 같습니다 .
  • 26. 중국어 인코딩 – GB2312 (94x94 문자셋 ) Guojia Biaozhun 2312 1980 년 제정된 간체 국가표준 (ISO 2022 규격 ) GBK,GB18030 이 제정되었지만 현재도 널리 사용 6763 개의 한자와 기호 , 히라가나 , 카타카나 , Pinyin( 병음입력 - 알파벳 ) 등을 포함해서 모두 7445 글자로 구성 동일한 구조의 번체표준 GB/T12345 ([ 예 ] 코드포인트 39-7A GB2312 => 囯 , GB/T12345 => 國 ) 99.75% 의 실용한문의 입력을 커버
  • 27. 중국어 인코딩 – EUC-CN EUC-CN 구조 GB2312ASCII • 1-9 Row 는 구두점과 스페셜 문자들로 구성되어 있습니다 . • 16-55 Row 는 한문이 Pinying( 병음입력 ) 에 따라 배열되어있습니다 ( 읽기 ) • 56-87 Row 는 한문이 획수에 따라 배열되어 있습니다 . • 10-15,88-94 는 아직 할당되어 있지 않습니다
  • 28. 중국어 인코딩 - 기타문자셋 GB7589 보조문자셋 GB2 라고도 불림 모두 7237 자의 한자 포함 유니코드에 포함됨 번체 GB/T13131 GB7590 보조 문자셋 , GB4 라고도 불림 모두 7039 자의 한자가 포함 유니코드에 포함됨 GB/T13132 입니다 .
  • 29. 중국어 인코딩 – GBK (CP936) 생성 유래 GB2312 의 확장판 . GBK 에 ‘ K’ 는 Extenstion 을 의미 Unicode 2.1 에 한중일 , 대만에서 사용되는 20,902 문자를 포함 하게 되었고 이에 따라 중국은 GB13000.1-93 를 제정하였다 ( 유니코드의 중국어판과 동일 ) 구조 GB13000.1-93 을 GB2312 에서 사용하지 않는 코드 포인트에 넣 음으로 GB2312 에 대한 상위호환성을 유지 국제표준은 아니나 Win95 에서 CP936 으로 널리 사용되면서 De facto Standard
  • 30. 중국어 인코딩 – GBK (CP936) CP936 인코딩 규격은 ISO 2022 를 따름 한 바이트표현은 ASCII 00-7F 영역 GBK 인코딩  첫 번째 바이트의 영역은 81-FE (CR,GR 영역 )  두 번째 바이트의 영역은 40-FE (GL,CR,GR 영역 ) GBK Encoding Ranges range byte 1 byte 2 code points characters Level GBK/1 A1–A9 A1–FE 846 717 Level GBK/2 B0–F7 A1–FE 6,768 6,763 Level GBK/3 81–A0 40–FE except 7F 6,080 6,080 Level GBK/4 AA–FE 40–A0 except 7F 8,160 8,160 Level GBK/5 A8–A9 40–A0 except 7F 192 166 user-defined AA–AF A1–FE 564 user-defined F8–FE A1–FE 658 user-defined A1–A7 40–A0 except 7F 672 total: 23,940 21,886
  • 31. 중국어 인코딩 – GB18030 GB2312,GBK 를 대체하기 위한 중국의 공식 문자셋 강제적으로 표준으로 정함 중국 내 모든 OS 는 모두 지원 구성 GBK,GB2312 와의 완벽한 하위 호환성 유지 , 가변길이 인코딩  GBK 에 추가적으로 유니코드를 순서대로 정렬 추가  110 만 개의 모든 유니코드 (0~16Plane) 에 대해 변환 가능 구조 Single-byte: 00-80 (*) (ASCII+ 유로기호 ) Two-byte: 81-fe | 40-7e, 80-fe (GBK) Four-byte: 81-fe | 30-39 | 81-fe | 30-39 (GB13000.1)  4 바이트일 경우 1,587,600 (126*10*126*10) 개의 문자를 맵핑 가능 ( 유니코 드 1,112,046 자 )
  • 32. 유니코드 목적 현존하는 문자 인코딩 방법들을 모두 유니코드로 교체  기존의 인코딩들은 그 규모나 범위 면에서 한정 , 다국어 환경에서는 서로 호 환되지 않는 문제점  다양한 문자 집합들을 통합 운영체제 , 최신 소프웨어 기술에 다국어 환경에서 호환 가능하도록 한다 . 역사 유니코드 컨소시엄에서는 유니코드 표준과 ISO/IEC 10646 을 발전시키 기 위해 ISO 와 공동 작업 ISO/IEC 10646-1:1993 ≈ Unicode 1.1 ISO/IEC 10646-1:2000 ≈ Unicode 3.0 ISO/IEC 10646-2:2001 ≈ Unicode 3.2 ISO/IEC 10646-3:2003 ≈ Unicode 4.0 ISO 10646 과 Unicode 의 대응관계
  • 33. ISO10646 구조 (≈ 유니코드 ) 기본언어판 , BMP BMP 는 Basic Mulitilingual Plane 의 약자입니다 . 유니코드의 첫 65,536 개의 코드를 의미합니다 . 언어판 , Plane 256x256 즉 65,536 개씩의 코드 묶음을 이릅니다 . 유니코드에서는 현 재 17 개의 언어판을 사용할 수 있습니다 . 모두 그룹 00 에 포함됩니다 . 언어판 그룹 , Group 1 언어판 그룹 256 Plane 유니코드의 17 개 언어판은 Group 00 포함 유니코드는 17 개의 언어판에 한정 ISO 10646 표준 (UCS-4) 에서는 모두 128 개의 언어판 그룹이 정의  1 Plane = 65,536 code points  1 Group = 256 planes = 256x65,536 = 16,777,216 code points  UCS-4 = 128 groups = 128x16,777,216 = 2,147,483,648 code points
  • 34. 유니코드의 구조 17 개의 언어판으로 구성 1 개의 기본언어판 (BMP) 와 16 개의 보충언어판 각 언어판은 216 , 즉 65,536 개의 문자로 구성 (256x256 언어판 ) 17x65,536=114112-2048 ( 대행코드영역 )=1112064 개의 문자 언어판 UCS4 영역 이름 문자수 0 (0x00) 0x00000000 - 0x0000FFFF 기본언어판 (BMP, Basic Multilingual Plane) 49,196 1 (0x01) 0x00010000 - 0x0001FFFF 보충언어판 (SMP, Supplementary Multilingual Plane for scripts and symbols) 1,594 2 (0x02) 0x00020000 - 0x0002FFFF 보충표의문자판 (SIP, Supplementary Ideographic Plane) 43,253 3 ~ 13 (0x03~D) 0x00030000 - 0x000DFFFF 아직 사용하지 않음 0 14 (0x0D) 0x000E0000 - 0x000EFFFF 특별보충판 (SPP, Supplementary Special-purpose Plane) 97 15 ~ 16 (0x0F~0x10) 0x000F0000 - 0x0010FFFF 개인사용목적으로 지정 (Private Use) 0 합계 94,140 언어판 1,2 는 3.1 버전에서 추 가 주로 고대문자 , 음표
  • 35. ISO10646 (≈ 유니코드 ) 인코딩 UCS-2: Universal Character Set 2 Universal Multipe-Octet Coded Character Set 2 ISO10646 의 규격 오직 BMP 의 65,536 코드만을 정의 , 2 바이트로 표현 유니코드를 순서대로 표현 . 2byte=[65536] UCS-4: Universal Character Set 4 Universal Multipe-Octet Coded Character Set 4 ISO10646 의 규격 128 개의 언어판 그룹 ( 언어판 그룹 =256 언어판 ) 128*(256 언어판 ) = 32,768 언어판을 정의 대략 231 = 2,147,483,648 문자 표현 유니코드 전체를 포괄 .
  • 36. ISO10646 (≈ 유니코드 ) 인코딩 – UTF-8 배경 완벽한 유니코드 인코딩은 UTF-16  이 인코딩은 16 비트 단위로 하나의 문자를 표현  UTF-16 을 기존의 Char 형에서 문자열로 취급할 때 중간에 (NULL,0) 이 있을 수 있다 . ( 문자열의 끝을 알려 버리는 문제 발생 )  대안으로 문자열 중간에 Null 이 나오지 않도록 고안 구조 유니코드 문자는 1 바이트에서 4 바이트까지 가변적으로 인코딩  BMP 에 위치한 문자는 1~3 바이트로 인코딩  나머지 16 개의 보충언어판에 위치한 문자는 4 바이트로 인코딩
  • 37. ISO10646 (≈ 유니코드 ) 인코딩 – UTF-8 UCS-4 UTF-8 0x00000000 - 0x0000007F 0xxxxxxx 0x00000080 - 0x000007FF 110xxxxx 10xxxxxx 0x00000800 - 0x0000FFFF 1110xxxx 10xxxxxx 10xxxxxx 0x00010000 - 0x001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 0x00200000 - 0x03FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 0x04000000 - 0x7FFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx UTF-8 과 UCS-4 간의 변환 규칙 여기까지가 UTF-8 인코딩 언어판 17 개까지에 대해서만 Code Points 1st Byte 2nd Byte 3rd Byte 4th Byte U+0000 ~ U+007F 00 ~ 7F U+0080 ~ U+07FF C2 ~ DF 80 ~ BF U+0800 ~ U+0FFF E0 A0 ~ BF 80 ~ BF U+1000 ~ U+CFFF E1 ~ EC 80 ~ BF 80 ~ BF U+D000 ~ U+D7FF ED 80 ~ 9F 80 ~ BF U+D800 ~ U+DFFF ill-formed (surrogate 부분이므로 인코딩되어서는 안됨 ) U+E000 ~ U+FFFF EE ~ EF 80 ~ BF 80 ~ BF U+10000 ~ U+3FFFF F0 90 ~ BF 80 ~ BF 80 ~ BF U+40000 ~ U+FFFFF F1 ~ F3 80 ~ BF 80 ~ BF 80 ~ BF U+100000 ~ U+10FFFF F4 80 ~ 8F 80 ~ BF 80 ~ BF 올바른 UTF-8 바이트 배열
  • 38. ISO10646 (≈ 유니코드 ) 인코딩 – UTF-16 특징 유니코드 영역만을 이용한 인코딩 가변 인코딩 : BMP= 2byte 표현 , 보충언어판 =4byte 표현 0~16 개의 모든 유니코드 언어판을 표현 가능  대행문자 영역 2,048 개를 제외한 63,488 개의 코드 표현 (BMP – 0Plane)  대행문자 영역 2 개의 쌍을 이용하여 16 개의 보충언어판 표현 가능 ( 즉 17 개의 모든 유니코드 언어판을 표현 가능 ) 높은 코드 효율로 유니코드 표준에서 지원하는 17 개의 언어판에 대해서만 인코딩 가능
  • 39. ISO10646 (≈ 유니코드 ) 인코딩 – UTF-16 기본언어판 (BMP) 2byte 로 표현 대행코드 조합으로 UTF-16 코드값 생성 공식 (4byte) CodeValue = (HighSurrogate - 0xD800) x (LowSurrogate - 0xDC00) + 0x10000  CodeValue 는 UTF-32 코드값  상위대행코드 영역의 시작점 : 0xD800  하위대행코드 영역의 시작점 : 0xDC00  보충언어판은 0x10000 부터 시작 (+0x10000 의 이유 )  CodeValue 는 U+10000 ~ U+10FFFF 까지 1048576 개의 값을 가 질 수 있게 됩니다 .  상위대행코드가 나오면 반드시 하위대행코드가 연달아 기술되어야 합니다 . (2byte(BMP 영역 ), 4byte( 보충언어판영역 ) 을 구분 가능 )
  • 40. ISO10646 (≈ 유니코드 ) 인코딩 – UTF-32 UTF-32 는 32 비트 (4byte) 로 모든 유니코드 문자를 표현 고정길이 인코딩 4byte UCS-4 차이점 ! 17 개의 언어판만을 대상으로 하는 UCS-4 의 부분집합 인코딩 영역  0x00000000 ~ 0x0010FFFF ( 영역만으로 제한 )  제한을 풀면 UCS-4 와 동일
  • 41. ISO10646 (≈ 유니코드 ) 인코딩 정리 인코딩 그룹 언어판 문자수 ( 표준 ) 문자수 ( 이론적 ) UCS-2 0 0(BMP) 216 =65,536 216 =65,536 UCS-4 0 ~ 127 0 ~ 32,767 231 =2,147,483,648 231 =2,147,483,648 UTF-8 0 0 ~ 16 17*216 -211 =1,112,064 231 =2,147,483,648 UTF-16 0 0 ~ 16 17*216 -211 =1,112,064 17*216 -211 =1,112,064 UTF-32 0 0 ~ 16 17*216 -211 =1,112,064 231 =2,147,483,648 각 인코딩별 표현 가능한 문자 수
  • 42. 인코딩 SUMMARY ASCII National Variant of ISO 646 National Variant of ISO 8859 ISO/IEC 2022 ISO 2022 구조 한국 KSC5601,CP949, EUC-KR 중국 GB2312, GBK 일본 JIS x0201,JIS x 0208 ,JISx0212, Shift-JIS, EUC-JP UNICODE ≈ ISO10646 인코딩 방식  UTF-16, UTF-8, UTF-32, UCS-2, UCS-4 의 차이점 .
  • 43. Application 별 인코딩 CD Joliet 파일시스템 = UCS-2 MP3 ID3 V2 Tag = UTF-8 OS File System FAT,NTFS - UTF-16 HFS+ (MAC OS:Hierarchical File System) – UTF 8 Ext3(Linux) - UTF, EUC 중 선택가능
  • 44. LCD 비트맵 폰트 출력과정 – EUC KR GL : ASCII GR : KSC 5601 Bitmap Array Order 0 1 2 3 4 KSC5601 Code(2byte) 0xA1A2 0xA1A3 0xA1A4 0xA1A5 0xA1A6 KSC5601 폰트 (16x16) 、 。 · ‥ … KSC 5601 폰트의 경 우 KSC 5601 코드순 서대로 정렬되어 있으 므로 맵핑테이블 필 요 없이 OFFSET 만 정하면 된다 . 파일시스템 EUC-KR 인코딩 KSC 5601 to KSC 5601 비트맵 폰트 맵핑 (16x16) 오프셋 폰트 출력 EUC-KR 폰트 출력 ASCII to ASCII 비트맵 폰트 맵핑 (8x16) 오프셋
  • 45. LCD 비트맵 폰트 출력과정 – UTF-8 파일시스템 UTF-8 인코딩 Decode UNICODE KSC5601코드 to 폰트 변환 맵핑 오프셋 설정 UNICODE to KSC5601 맵핑 테이블 폰트 출력 파일시스템 UTF-8 인코딩 Decode UNICODE UNICODE to 폰트 맵핑 오프셋 폰트 출력 UTF 8 폰트 출력 UTF 8 폰트 출력 UNICODE 폰트 이용시 Bitmap Array Order 0 1 2 3 4 KSC5601 Code(2byte) 0xA1A2 0xA1A3 0xA1A4 0xA1A5 0xA1A6 KSC5601 폰트 (16x16) 、 。 · ‥ … UNICODE 0x00B4 0xFF5E 0x02C7 0x02C7 0x02D8 유니코드 폰트 이 용시 변환 과정 생략

Editor's Notes

  1. 주로 쓰이는 한국어, 중국어 ,일본어 , 유니코드 문자셋 인코딩에 대해 설명드리겠습니다. 아시다시피 문자인코딩 자체만으로도 큰 하나의 학문이기 때문에 짧은 시간에 자세히 설명드리기는 힘들 것 같습니다. PPT자료에서 짧게 설명된 부분은 별도로 만든 문서를 세미나 이후에 메일로 보내드리도록 하겠습니다. 오늘 주의 깊게 보셔야 할 부분은 ISO 2022의 구조! , 유니코드 인코딩간의 차이점!이 되겠습니다.
  2. 부호화된 문자집합 때문에 문자인코딩과 문자셋이 계속 헷갈릴 수 있습니다. 부호화된 문자집합을 그대로 사용하여도 문자인코딩이 되기 때문. UCS-2,ISO2022가 대표적인 예 CCS는 문자셋이면서 인코딩이기도 하다고 생각하시면 됩니다. 지금 부터 쭉 보시면서 어떤게 CCS인지 확인 하시면서 발표를 들으시면 좋을 것 같습니다.
  3. ASCII는 0x21부터 시작하지요? 왜 그럴까요? 뒤에 ISO 2022 규격에 대해 설명드릴텐데 GL 영역의 시작점을 한번 확인해보세요.
  4. 매우 중요한 내용입니다 대부분의 문자셋이 ISO 2022의 규격을 따르고 있기 때문에 ISO2022 구조만 이해하시면 오늘 발표내용의 70%는 끝났다고 볼 수 있습니다. 나중에 KSC5601 설명드릴때 구조는 보다 정확히 아실 수 있습니다. 인코딩은 다른 문자셋도 포함이 가능하므로 포함관계는 EUC-KR이 크다고 볼수 있습니다. 앞으로 설명드릴 문자셋이랑 인코딩은 대부분 ISO2022와 ISO10646-1(유니코드) 규격을 참조하고 있다.
  5. 좀 더 자세한 것은 다음 장에 한글 인코딩을 설명하면서 KSC5601에서 실제로 ISO2022구조를 확인 해보도록 하겠습니다. 1BYTE GL 영역 G0는 왜 반드시 ASCII 여야 하나? 왜? 각 문자셋들의 Escape Sequence G0 –G3까지의 문자맵핑 정의가 ASCII코드를 기준으로 하고 있기 때문.
  6. 먼저 왜 코드요소는 4개인가? 8bit의 경우 자판이 두벌 GL과 GR이 있는데 여기에 Locking shift를 하면 4개의 코드요소가 생깁니다. ISO2022에 맞는 인코딩을 만들려면 여러가지 문자셋을 G0부터 G3까지의 코드요소에 할당을 합니다. ( 이는 C0(CL)영역에 G0-G3까지의 영역에 맵핑된 문자를 정의합니다. ) 타자기로 치면 활자를 망치에 새기는 거죠 그리고 이 4가지 코드요소 코드테이블에 Escape Sequence(Locking shift)를 이용하여 GL영역과 GR영역에 맵핑하여 사용하게 됩니다. ISO2022에서 G0 –G3 에 각각의 문자셋들이 들어갈때 표현하는 국제 표준을 만들었습니다.
  7. 7bit의 경우 C0의 Locking Shift에 의해 G0,G1를 호출 가능 ESC를 이용 C1을 호출 C1의 Locking Shift에 의해 G2 G3 호출가능 8bit는 CL CR 이용
  8. 0201같은 경우 아스키와 같은 반각 (8x16) 인데 2바이트
  9. 차이점 존재 ! 유니코드는 17개의 언어판에 대해서만 지칭! ISO10646은 256개의 언어판을 그룹이라하고 이 그룹이 128개 있음
  10. 유니코드 표준 3.0에서는 49,194 문자가 정의되었고 이들은 모두 BMP에 한정되어 정의되었으나, 3.1에서는 BMP에 2개의 문자를 추가하고, 보충언어판에 44,944개의 문자를 추가하였습니다. 새로 추가된 문자들은 음표, 고대문자, 한자(CJK Ideographic Extension B) 등입니다. 제 15, 16 언어판에 대한 설명이 조금 필요할 듯 합니다. 이 두개의 언어판은 개인사용(Private Use)로 지정되었습니다. 개발자들에게는 일종의 보너스라고 말하는 사람들도 있군요. 어쨌던 이 두 언어판은 상위대행코드중 마지막 128개 코드와 하위대행코드의 조합으로 지정됩니다(UTF-16 인코딩의 경우). 이 때문인지 유니코드 3.1에서는BMP의 U+DB80 ~ U+DBFF 영역을 별도로 분리하여 High Private Use Surrogates라고 이름이 붙여졌습니다.
  11. 2바이트면 655
  12. UCS-4 전역을 인코딩 가능함을 보여드린 것 UTF-8에서 xxxx표시부분만 빼서 유니코드에 바로 맵핑변환 가능
  13. 파일에 코드 저장시 UTF-16코드 저장시 bmp 2바이트 보충언어판 4바이트
  14. 16x16 =32byte