티스토리 뷰
Unicode
언어별로 인코딩을 다르게 설정해 줘야하는 ASCII, ANSI encoding 의 한계를 극복하기 위해 (ASCII, ANSI ecoding 참조), 통일된 규격으로 해당 숫자에 모든 글자를 할당해 어떠한 환경에서도 같은 언어를 볼 수 있게 만든 것이 바로 Unicode입니다. Unicode는 모든 문자를 특정 숫자에 1:1로 매핑해 놓았습니다. 예를 들어 한글은 자음, 모음, 완성형 한글이 모두 각각의 숫자에 매핑이 되어있습니다.
(한글 유니코드의 일부분)
유니코드는 글자의 코드를 표기할때 U+(16진수 숫자) 라고 표기합니다. 예를들어 ㄱ은 유니코드로 U+1100, ㅎ 은 유니코드로 U+1112 가 됩니다. 이 유니코드를 표현하는 방식(인코딩) 으로 UCS-2, UTF-16, UTF-8, UTF-32 등이 있습니다.
- UCS-2
유니코드에 매핑된 문자들의 갯수는 초창기에 2바이트를 넘지 않았습니다. 따라서 고정된 2바이트를 사용하면 모든 유니코드를 표현할 수 있기 때문에 고정 2바이트 인코딩인 UCS-2가 탄생하게 되었습니다. 하지만 유니코드에 매핑된 문자들의 갯수는 점점 늘어났고, 고정 2바이트로는 모든 유니코드를 표현 할 수 없는 상태가 됩니다. 그래서 고정 4바이트를 사용하는 UCS-4를 사용하자는 의견이 있었지만, 채택 되지는 않았습니다.
- UTF-16
UCS-2로 모든 문자를 표시할 수 없는 한계를 극복하기 위해 2바이트 고정 크기가 아닌, 가변크기의 UTF-16이 탄생하게 됩니다. UTF-16은 UCS-2에 표현되어 있는 글자는 2바이트로 표기하고, 2바이트를 넘어서는 문자는 4바이트로 표기하는 인코딩 방식입니다. 따라서 UTF-16은 UCS-2의 대안으로 제시 되었던 UCS-4보다는 공간을 효율적으로 사용하면서 UCS-2와 호환이 되었습니다. 하지만 UTF-16에도 단점이 있었습니다. 바로 기존의 인코딩인 ASCII와 호환이 되지 않았던 것입니다. 또한 엔디안 호환성 문제도 있었기 때문에 사람들은 다른 대안을 찾게 됩니다.
- UTF-32
유니코드를 무조건 4바이트를 사용하여 표기하는 인코딩입니다. UTF-32는 가변 길이 인코딩에 비해 공간을 너무 많이 차지하기 때문에 잘 쓰이지 않습니다. 하지만 가변 길이를 고려할 필요가 없어서 처리가 간단하기 때문에 종종 쓰이기도 합니다.
- UTF-8
UTF-8은 가변 인코딩으로 1바이트 에서 6바이트를 사용합니다. UTF-16이 ASCII와 호환되지 않았던 점을 보안하여 UTF-8은 처음 부분에 ASCII코드 값과 똑같은 코드 값을 넣어 아스키 문서를 UTF-8으로 그대로 읽을 수 있습니다. 또한 엔디안 문제를 해결하여 호환성도 뛰어났습니다. 따라서 UTF-8 이 현재 가장 널리 쓰이는 유니코드 인코딩이 되었습니다.
'컴퓨터' 카테고리의 다른 글
ASCII 와 ANSI encoding (0) | 2016.11.09 |
---|---|
왜 숫자는 0부터 세어야 하는가? (1) | 2016.11.08 |
[컴퓨터개론] 2의 보수 (1) | 2016.11.04 |
[컴퓨터개론] 정수의 덧셈과 뺄셈 (0) | 2016.11.04 |
- Total
- Today
- Yesterday
- libgcrypt
- UTF8
- 다운로드
- 안드로이드
- MySQL
- object orient
- 설치
- ubuntu
- 여러 인자
- 컴퓨터 숫자
- mariasql
- locales
- wine1.8
- 우분투
- Android
- 언리얼 엔진4
- winetricks
- libgcrypt11
- 한글
- docker
- install
- 객체란
- 왜 0부터
- unreal4
- Uniity5
- download
- 인코딩
- void* arg
- 2의 보수
- utf-32
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |