C++

멀티바이트와 유니코드

monstro 2024. 2. 26. 12:26
728x90
반응형

컴퓨터에서 인간이 사용하는 문자를 표현하는 수단은 여러가지가 있습니다.

이 포스팅에서는 그 중에서 몇 가지를 알려드리고자 합니다.

 

(1) ASCII

첫 번째로 ASCII입니다.

가장 큰 특징으로는 영어만 고려한다는 점입니다.

이 특징으로 인해 7bit만 사용하게 되는데, 이는 0~127까지의 경우만 표현됩니다.

 

(2) ANSI

두 번째는 ANSI입니다.

가장 큰 특징으로는  ASCII + ANSI값 입니다.

ASCII코드의 한계인 영어만 표현한다는 점을 극복하고자 고유값인 ANSI값을 더하여 표현의 범위를 늘릴 수 있습니다.

예를 들어, 한국어는 CP949의 ANSI값을 갖습니다.

그러나 ANSI의 가장 큰 문제점은 똑같은 ANSI값이 똑같은 문자가 아닐 확률이 존재한다는 것입니다.

만일 한국->중국으로 '안녕'을 송신하면, 중국에서는 '안녕'의 ANSI값이 수신되고

중국의 인터넷 환경에서는 이 ANSI값이 다르게 해석될 수 있다는 것입니다.

 

(3) 유니코드

이러한 ANSI의 문제점을 대체하기 위한 것이 바로 유니코드입니다.

 

가장 큰 특징으로는 

 

동일한 번호 == 동일한 문자 == 동일한 유니코드

 

라는 점입니다.

 

그렇기에 문자와 관련된 설정을 다룰 때는 유니코드 방식이 매우 안전합니다.

 

유니코드는 인코딩 방식에서도 차이가 있는데, 지금부터 한번 알아보겠습니다.

 

(4) 유니코드 - MBCS(Multi Byte Character Set)

익숙한 말로 utf-8로 말할 수 있는 인코딩 방식입니다.

다른 말로 가변 길이 인코딩이라고도 부를 수 있습니다.

 

특징으로는

(1) 영어는 반드시 1byte

(2) 그 외의 언어는 3byte

로 사용됩니다.

 

따라서 영어만 사용하는 인터넷 환경에서 효율적입니다.

 

(5) 유니코드 - WBCS(Wide Byte Character Set)

익숙한 말로 utf-16이라고 말할 수 있는 인코딩 방식입니다.

다른 말로 고정 길이 인코딩이라고도 부를 수 있습니다.

 

특징으로는 

(1) 거의 모든 언어가 2byte

(2) 특수한 경우에만 4byte

로 사용됩니다.

 

따라서 다양한 언어를 사용하는 인터넷 환경에서 효율적입니다.

 

이제 각각의 문자를 표현하는 방법을 코드로 알아보겠습니다.

 

-ANSI

 

 

-UTF-8

 

 

 

728x90
반응형

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

람다  (0) 2024.03.18
함수 객체  (0) 2024.03.11
함수 포인터  (0) 2024.03.11
C스타일 문자열과 C++스타일 문자열  (0) 2024.02.26
algorithm 헤더 파일  (0) 2024.02.26