Character Encoding
- 문자 인코딩, Text Encoding
- Process of assigning numbers to graphical characters
- To be stored, transmitted, and transformed using digital computers
Encoding
"A"
01000001
: ASCII
01000001
: UTF-8
00000000 01000001
: UTF-16
Decoding
ASCII
- American Standard Code for Information Interchange
A
-> 01000001
- 128개의 문자 표현
- 95개의 출력 가능 문자(영문 알파벳 52개, 숫자 10개, 특수문자 32개, 공백문자 1개)
- 출력 불가능한 제어문자(control character)
- 1비트는 체크섬으로 사용
알파벳 + 숫자
- 대문자 A(65) ~ Z(90)
- 소문자 a(97) ~ z(122)
- 숫자 0(48) ~ 9(57)
기타
- NUL(0)
\0
- SOH(1), STX(2), ETX(3), EOT(4), ENQ(5), ACK(6)
- BEL(7)
\a
- BS(8)
\b
- HT(9)
\t
- LF(10)
\n
- FF(12)
\f
- CR(13)
\r
- ESC(27), DEL(127)
Unicode
- 모든 언어를 표현할수 있도록 만든 문자집합
- Unicode 문자집합을 표현할수 있는 문자열 인코딩
Plane (Unicode)
- 0번 ~ 16번 (17 planes)
- Basic multilingual plane (BMP)
UTF-8
- 8-bit 인코딩
- ASCII와 호환
- 표현하는 문자에 따라서 1 ~ 6 바이트 사용
- 한글은 3바이트 사용
- 1바이트 문자
0xxxxxxx
: ASCII와 호환
- 2바이트 문자
110xxxxx 10xxxxxx
- 3바이트 문자
1110xxxx 10xxxxxx 10xxxxxx
- 4바이트 문자
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
UTF-16
- 16-bit 인코딩
- 2 ~ 4 바이트 사용
- BOM(Byte Order Mark)을 사용
- BMP에 속하는 문자들은 16비트로 인코딩
UTF-32
- 32-bit 인코딩
- 모든 문자를 고정길이 4바이트로