개발자 면접 공부/운영체제,CS

UTF-8 vs UTF-16

chogyujin 2022. 9. 16. 22:54
728x90

오늘은 UTF-8 과 UTF-16의 차이점을 공부해보겠습니다.


먼저 UTF의 개념을 이해하기 전에 유니코드의 개념을 이해해야 합니다.

 

유니코드

유니코드는 다국어를 지원하는 프로그래밍을 하다보면 가장 먼저 접하는 어려움입니다.

컴퓨터의 언어는 0과 1로만 이루어 져있는데 세상에는 무수한 언어가 존재합니다.
컴퓨터 내에서 무수한 언어를 표현하기 위해 나타난 기법입니다.
일단 유니코드라는 용어의 개념은
숫자와 글자, 즉 키와 값이 1:1로 매핑된 형태의 코드입니다.

 

예를들어 ASCII Code로 0x41 = A로 매핑된 것 처럼, 아스키코드로 표현할 수 없는 문자들을 유니코드라는 이름 아래 전세계의 모든 문자를 특정 숫자(키)와 1:1로 매핑한 것 입니다.

 


UTF란?

UTF는 유니코드 문자를 인코딩 하는 방식을 나타냅니다.

UTF는 몇 bit를 사용하여 Index를 표현할 것인가를 뜻하며 예를들어 UTF-8은 8bit를 사용하여 1개의 Index를 표현하며

UTF-16은 16bit를 사용하여 1개의 Index를 표현하는 것 입니다.

 


UTF-8

UTF-8은 8bit를 사용하며 인터넷 대부분에서 기본적으로 사용되는 인코딩 방식입니다.

가변 길이 문자 인코딩방식중 하나이며 한 문자를 나타내기 위해 1byte~4byte까지를 사용하며
사실은 6byte까지 사용되지만 일반적인 문자는 3byte 내로 처리되며

4byte 영역에는 이모티콘 같은 문자가 존재합니다.

사실상 4byte 이상의 문자를 사용하는 경우가 없다 보니 1 ~ 4byte를 사용한다고 말합니다.

영문 byte 수 : 1byte

한글 byte 수 : 3byte

 

한글은 3byte인 이유는
사람이 사용하는 모든 언어를 bit로 표현된 숫자로 매핑 해놓았기 때문입니다.

한글을 3byte로 대응해놨기 때문에 3byte가 되는것 입니다.

 


UTF-16

UTF-16은 16bit를 사용하며 주로 사용되는 기본 다국어 평면(BMP,Basic multilingual plane)에 속하는 문자들은 그대로 16bit값으로 인코딩되고 그 이상의 문자는 특별히 정해진 방식으로 32bit로 인코딩 됩니다.

UTF-16은 한 문자를 나타내기 위해 2byte~4byte까지를 사용하며

영어는 : 2byte

한글도 : 2byte

입니다.

 


UTF-8 vs UTF-16

문자 하나를 표현하기 위한 필요 bit의 크기가 다릅니다.

8bit vs 16bit

 

문자 하나를 표현하기 위한 byte 범위의 차이

1byte~4byte vs 2byte~4byte

 

 

'개발자 면접 공부 > 운영체제,CS' 카테고리의 다른 글

RBT(Red Black Tree) VS 힙  (0) 2022.11.21
해쉬 테이블(Hash Table)  (0) 2022.11.15
컴파일 과정  (0) 2022.09.14
리틀 엔디안 vs 빅 엔디안  (0) 2022.09.09
쓰레드 풀링, 메모리 풀링  (0) 2022.08.23