ASCII(American National Standards Institute)

- 미국 국가 표준 협회(ANSI)에서 정의한 문자 인코딩 규칙
- 7bit => 2^7 = 128개 문자 표현 가능
- 영어 알파벳, 숫자, 특수 문자 등
- 약 90여 개의 문자에 코드값(2진수) 정의
ISO-8859-1 (ISO-Latin-1)

- HTML 문서의 기본 인코딩
- 8bit => 2^8 = 256개 문자 표현 가능
- ASCII + 서유럽 문자(네덜란드어, 노르웨이어, 덴마크어, 독일어, 로망슈어, 스웨덴어 등..)
- 약 200여 개의 문자에 코드값(2진수) 정의
EUC-KR
- 16bit => 2^16
- 한글 음절 한 개에 대해 인코딩 규칙을 정의한 완성형 인코딩 규칙 -> 2바이트 코드값
- 가 -> 1011 0000 1010 0001 (0xB0A1)
| 가 | 각 | ... | 똘 | 똠 | 똡 | 똣 | 똥 |
| 0xB0A1 | 0xB6CA | 0xB6CA | X | X | X | 0xB6CB |
- 표현하지 못하는 문자가 존재
조합형

- 2바이트 16bit : 한글(1bit) + 초성(5bit) + 중성(5bit) + 종성(5bit)
- '녁' -> 0x 1001 0001 0110 0010 (9162)
- 65536개의 코드 중에서 절반을 한글에 사용 -> 국제 표준 X HWP에서만 사용
MS949
- EUC-KR + @
- Windows 95 이상 부터 지원한 MS에서 만든 언어 코드 (국제 표준)
- 기존의 EUC-KR에 문자 코드를 추가했기 때문에 정렬할 때 문제 발생
- 똘똠똡똥(b6ca 8c63 8c64 b6cb) --정렬--> 똠똡똘똥
| 가 | 각 | ... | 똘 | 똠 | 똡 | 똣 | 똥 |
| 0xB0A1 | 0xB6CA | 0xB6CA | 0x8C63 | 0x8C64 | 0x8C645 | 0xB6CB |
Unicode
- 전 세계의 모든 문자를 컴퓨터에서 일관되게 처리할 목적으로 정의된 산업 표준 규칙
- 유니코드는 '문자를 2진수로 표현(인코딩; encoding)'할 때, 두 가지 방식(UCS UTF)을 사용
- 자바는 메모리에 문자를 저장할 때는 'UCS(국제 문제 집합)'를 사용하고, 외부로 입출력 할 때는 'UTF'를 사용
UCS(Universal Coded Character Set; 국제 문자 집합)
- 'ISO 10646' 표준을 가리키는 이름
- 110만개 이상의 문자에 대해 코드 값 정의
- 0 ~ 65535 까지의 코드가 주로 사용되며, 보통 'USC-2'라 부름. 즉, 2바이트 범위에서 정의한 유니코드라는 의미.
- 자바가 사용하는 유니코드가 'UCS-2'
UTF(UCS Transformation Format)
- 문자를 1바이트 코드 값으로 저장하는 기존 시스템에서 UCS를 사용하기 위해 만든 문자 인코딩 방식이다.
- UTF-8, UTF-16, UTF-32가 있으며 주로 UTF-8이 사용된다.
| 코드 범위(십육진법) | UTF-16BE 표현(이진법) | UTF-8 표현(이진법) | 설명 |
| 000000-00007F | 00000000 0xxxxxxx | 0xxxxxxx | ASCII와 동일한 범위 |
| 000080-0007FF | 00000xxx xxxxxxxx | 110xxxxx 10xxxxxx | 첫 바이트는 110 또는 1110으로 시작하고, 나머지 바이트들은 10으로 시작함 |
| 000800-00FFFF | xxxxxxxx xxxxxxxx | 1110xxxx 10xxxxxx 10xxxxxx | |
| 010000-10FFFF | 110110yy yyxxxxxx 110111xx xxxxxxxx | 11110zzz 10zzxxxx 10xxxxxx 10xxxxxx | UTF-16 서러게이트 쌍 영역 (yyyy = zzzzz - 1). UTF-8로 표시된 비트 패턴은 실제 코드 포인트와 동일하다. |
UTF-8
- UCS의 코드 값 중 00 ~ 7F(127개)까지 ASCII에 해당하는 UCS 코드(영어)는 그대로 1바이트로 표현
- 기존 시스템을 변경하지 않고 유니코드를 사용할 수 있도록 하기 위해 UTF-8이 만들어짐
- 그 외의 문자 코드는 규칙에 따라 2바이트 ~ 4바이트까지 변환하여 표현 (한글은 3바이트)
- 대부분의 시스템에서 데이터 입출력 할 때 UTF-8을 사용한다.
- 자바에서도 데이터 입출력할 때 주로 UTF-8을 사용하고 있다.
UTF-16
- UCS-2의 코드 값은 그대로 2바이트로 표현하며, ASCII 코드도 UCS-2와 동일하게 2바이트로 표현
- 따라서 UCS-2의 코드 값을 표현할 때는 UCS-2와 같다.
- UCS-2와 다른 점은 UCS-2의 범위를 벗어나는 문자 코드 값도 표현할 수 있으며,
- UCS-2를 벗어나는 유니코드는 무조건 4바이트로 변환함
UTF-32
- UCS-4의 4바이트 코드 값을 그대로 표현
- 즉 UTF-32는 UCS-4와 같음
- 모든 문자를 4바이트 코드 값으로 표현하기 때문에 메모리 낭비가 심함
'프로그래밍 > CS' 카테고리의 다른 글
| 데이터의 타입 (0) | 2019.12.11 |
|---|---|
| 인터페이스 (0) | 2019.12.11 |
| 실수의 표현 - 부동소수점 (0) | 2019.12.09 |
| 숫자의 표현방법 - sign-magnitude/1's complement/2's complement/Excess-K (0) | 2019.12.09 |
| 데이터의 코드화, 리터럴, 이스케이프 문자 (0) | 2019.12.07 |