UTF-8

UTF-8유니코드 문자 인코딩의 하나이다. ASCII 문자는 1바이트로 표현하며, 기타 문자는 2~4바이트로 표현한다. 대부분의 리눅스 배포판macOS에서 표준 인코딩으로 채택되어 사용되고 있으며, 에서도 많이 쓰인다.

대부분의 CJKV 문자(한글·한자·히라가나·가타카나 등)는 3바이트 영역에 들어간다.

UTF-8은 ASCII를 사용하는 프로그램에서도 큰 오작동이 일어날 일이 없다는 장점이 있기 때문에, 애초에 ASCII를 위해 디자인된 유닉스 계열 운영 체제에서는 UTF-8을 권장한다. Microsoft WindowsUTF-16을 사용한다.

1 구조[편집]

첫 번째
코드 포인트
마지막
코드 포인트
첫째 바이트 둘째 바이트 셋째 바이트 넷째 바이트 시작
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 표현이다.

2 각주