본문 바로가기

C++

문자 타입

 

 Unicode : 세상 모든 문자들에게 고유한 코드를 부여한 것이 유니코드입니다. 알파벳은 ASCII 인코딩을 사용하여 char형에 대응시킬 수 있다. 하지만 세상 모든 문자를 담기에는 char형은 턱없이 부족했기에, char의 범위 내에 표현 하지 못한 문자는 두개의 char를 합쳐서 표현하기도 했다(코드 페이지). 하지만 이 코드 페이지는 각 문화권에 따라 개별적으로 존재하고, 같은 char가 코드페이지에 따라 다른 문자가 되기도 했다. 이러한 문제를 해결하기 위해 Unicode가 생겼다.

(얘들아 싸우지마, 그러지말고 우리 모두 문자들을 모하서 각자 고유의 번호를 매겨주면 되잖아~)


 

 UTF - N Unicode Transformation Format

  유니코드를 컴퓨터 타입으로 대응시키는 방식입니다. N은 N비트의 배수로 한 문자를 표현한다는 뜻이고, UTF-8의 경우 8비트의 배수, 즉 8비트가 부족하면 16비트, 16비트도 부족하면 24비트로 한 문자를 표현하겠다 라는 것입니다.

 

UTF - 8에서 알파벳은 ASCII와 동일하게 8비트로 표현이 되지만, 한글은 24비트로 표현이 됩니다.

UTF - 16에서는 알파벳과 한글 모두가 16비트로 표현이 됩니다.

 

그래서 영어권나라는 UTF-8을선호합니다. (ASCII와 그대로 호환되고, 메모리도 절약할 수 있기 때문에)

하지만 한글은 UTF-8에서 24비트, UTF-16에서 16비트의 크기를 가지기 때문에 UTF-16을 선호합니다.

 

그럼 영어랑 한글이 섞여 있을때는 어떡하죠?!

 영어가 많이 나올지 한글이 많이 나올지 예측할 수 없는 상황에서는 UTF-16은 한글과 영어가 모두 16비트 이기 때문에 16비트씩 읽으면 돼서 글자를 셀 때 더 빨리 셀 수 있습니다. UTF-8은 알파벳이 많을 수록 메모리가 절약 될 수 있지만, 영어를 읽을때는 8비트, 한글을 읽을때는 24비트 이렇게 문자마다 읽어야 하는 크기가 다르기 때문에 읽는 속도가 비교적 느릴 수 있다. 그렇게 때문에 이런 상황을 잘 고려해서 골라야 하겠지만 UTF-16이 더 이득같다..

'C++' 카테고리의 다른 글

dynamic_cast  (0) 2024.09.05
static_cast  (0) 2024.09.05
참조 타입 (Reference)  (0) 2024.07.07
부동소수점  (0) 2024.07.03