잔글 (불필요한 공백 제거) |
|||
28번째 줄: | 28번째 줄: | ||
{{프로그래밍}} | {{프로그래밍}} | ||
[[분류: | [[분류:유니코드]] | ||
[[분류:표준]] | [[분류:표준]] | ||
{{각주}} | {{각주}} |
2022년 4월 3일 (일) 16:43 판
UTF-8은 유니코드 문자 인코딩의 하나이다. ASCII 문자는 1바이트로 표현하며, 기타 문자는 2~4바이트로 표현한다. 대부분의 리눅스 배포판과 macOS에서 표준 인코딩으로 채택되어 사용되고 있으며, 웹에서도 많이 쓰인다.
대부분의 CJKV 문자(한글·한자·히라가나·가타카나 등)는 3바이트 영역에 들어간다.
UTF-8은 ASCII를 사용하는 프로그램에서도 큰 오작동이 일어날 일이 없다는 장점이 있기 때문에, 애초에 ASCII를 위해 디자인된 유닉스 계열 운영 체제에서는 UTF-8을 권장한다. Microsoft Windows는 UTF-16을 사용한다.
구조
첫 번째 코드 포인트 |
마지막 코드 포인트 |
첫째 바이트 | 둘째 바이트 | 셋째 바이트 | 넷째 바이트 | 시작 | 끝 |
---|---|---|---|---|---|---|---|
U+0000 | U+007F | 0xxxxxxx |
00 |
7F
| |||
U+0080 | U+07FF | 110xxxxx |
10xxxxxx |
C2 80 |
DF BF
| ||
U+0800 | U+FFFF | 1110xxxx |
10xxxxxx |
10xxxxxx |
E0 A0 80 |
EF BF BF
| |
U+10000 | U+10FFFF | 11110xxx |
10xxxxxx |
10xxxxxx |
10xxxxxx |
F0 90 80 80 |
F4 8F BF BF
|
예를 들어 €(U+20AC, 유로 기호)는 다음과 같이 인코딩된다.
- U+0800과 U+FFFF 사이에 있으므로 3바이트로 표현된다.
- 0x20AC는 2진수로
0010 0000 1010 1100
로 표현된다. 맨 앞에 0 두 개가 추가된 이유는 3바이트 표현은 정확히 16비트를 필요로 하기 때문이다. - 이를
1110xxxx 10xxxxxx 10xxxxxx
이라는 패턴에 그대로 집어넣는다. 그러면11100010 10000010 10101100
이 된다. - 따라서 €는 UTF-8에서
E2 82 AC
로 인코딩된다.
하나의 문자가 여러 가지 방법으로 인코딩될 수 있으나, 올바른 UTF-8 표현은 가장 짧은 것 하나뿐이다. 예를 들어 U+0000은 00
, C0 80
, D0 80 80
, F0 80 80 80
과 같이 여러 가지 방법으로 인코딩될 수 있지만, 이 중에서 가장 짧은 00
하나만이 올바른 UTF-8 표현이다.
프로그래밍 관련 정보 |
|||||||||
---|---|---|---|---|---|---|---|---|---|
문자 인코딩 | |||||||||
문자 집합 |
|
||||||||
프로그래밍 언어 | |||||||||
마크업 언어 | |||||||||
표준과 API와 규격 | |||||||||
라이브러리 | |||||||||
프레임워크 | |||||||||
개발 소프트웨어 | |||||||||
튜토리얼 |