본문 바로가기

OSI Model

22. UTF-8 (6계층 Presentation Layer 표현 계층)

(6계층 Presentation Layer 표현 계층)


UTF-8 (Universal Coded Character Set + Transformation Format – 8-bit) 의 약자이다

 

과거에는 ASCII 코드를 표준으로 삼고 사용했었다.

 

하지만 ASCII 코드는 미국에서 정의한 표준이기 때문에 표현할 수 있는 문자는

알파벳과 그 확장형인 몇 가지 기호들만을 포함했다.

 

더군다나 1바이트라는 크기로 만들어져서 다른 나라의 언어를 담기에는 다소 무리가 있었다.

 

그렇기 때문에 알파벳을 제외한 세계 다른 언어들은 모두 깨져서 표현되었다. 그래서 나타난 것이 "유니코드"이다.

 

2바이트의 넉넉한 크기와 함께 65,536개의 문자를 표현할 수 있다.

 

하지만 기존 1바이트만으로 충분히 표현할 수 있었던 ASCII 코드 입장에서는 크기가 두 배가 되어 이래저래 비효율적인 구조였고 이를 보완하기 위해 등장한 것이 가변 규격 "UTF-8"이 등장해 바이트를 가변적으로 조절해가면서 ASCII 코드와 호환되도록 하였다

 

(ASCII코드 1~127번까지표현되며 이후 문자는 유니코드로 이뤄진다.)

이후로 유니코드는 전 세계 문자 코드의 표준이 되었다.

 

 

1 유니코드 코드표 에서 '가' 의 코드포인트를 찾는다.

'가' 의 코드포인트는 U+AC00 이다

 

2 '가'의 코드포인트를 UTF-8 방식으로 인코딩한다.

 

 

UTF-8 인코딩

 

'가'의 코드포인트 U+AC00 =========> EA B0 80

 

'가'를 UTF-8로 인코딩 하니 'EA B0 80' 이라는 3byte 값이 된다

 

 

코드포인트 범위에 따른 UTF-8 인코딩 방법

 

'가' 의 코드포인트는 U+AC00 이고, 2진수로 표현하면 10101100 00000000 이다.

 

U+AC00 은 U+0800 ~ U+FFFF 범위에 있으니 인코딩 방법에 따라

 

1110xxxx 10xxxxxx 10xxxxxx 의 x 자리에 순서대로 유니코드의 값을 채워 넣으면 된다.

 

'가' 의 코드포인트 2진수 값을 앞에서부터 채우면

11101010 10110000 10000000 ( 16진수 => EA B0 80 )

이와 같은 방식으로 '가'의 인코딩 값이 3byte의 'EA B0 80' 이 된다

 

이렇게 UTF-8 은 유니코드 범위에 따라 1~4byte 로 인코딩하는 가변 크기 인코딩 방식이다.

 

사용 빈도가 높은 글자는 적은 저장 공간을 차지하고 사용 빈도가 낮은 글자는 많은 저장 공간을 차지하게 하려고 만든 인코딩 방식이 UTF-8이다.

 

유니코드에 대한 링크

https://leejoongwon.blogspot.com/2019/06/21-unicode-6-presentation-layer.html