LISTORY

[윈도우즈 시스템 프로그래밍] Windows에서의 유니코드(UNICODE) 본문

IT/윈도우 프로그래밍

[윈도우즈 시스템 프로그래밍] Windows에서의 유니코드(UNICODE)

LiStoryTeller 2018. 5. 12. 18:55


뇌를 자극하는 윈도우즈 프로그래밍 책의 유투브 강의이다.


이번 차수는 2장 유니코드에 대해서 이다.


 YouTube 주소 ⊙ ☞ 2장. Windows에서의 유니코드(UNICODE)




아스키코드 vs 유니코드



문자셋의 종류와 특성


문자셋이라는 것은 문자 집합을 뜻한다. 문자를 어떻게 표현하느냐에 따라 다음과 같이 세가지로 나뉜다.


SBCS(Single Byte Character Set)

- 문자를 표현하는데 1바이트 사용

- 아스키 코드


MBCS(Multi Byte Character Set)

- 한글은 2바이트, 영문은 1바이트 사용


 WBCS(Wide Byte Character Set)

- 문자를 표현하는데 2바이트 사용

- 유니코드


컴퓨터는 MBCS 기반의 Character Set이다.


얼핏 보기에는 MBCS 기반의 Character Set이 좀더 효율적으로 보이기도 한다.


하지만 요즘 시스템은 메모리등의 발전 등으로 인해 MBCS로 효율적으로 프로그래밍했다고 말하기에는 무리가 있다. 


그래서 사용하게 된 것이 유니코드이다. 유니코드는 모든 문자를 2바이트로 사용하기에 안정성이 좋다.



◎ WBCS 기반의 프로그래밍


WBCS 기반으로 프로그래밍을 하기 위해서는 두가지를 기억해야 한다.


① char를 대신하는 wchar_t 사용

② "ABC"를 대신하는 L"ABC" 사용


"ABC" 와같이 사용하면 암묵적으로 아스키코드를 사용하겠다는 뜻이므로, 유니코드를 사용하겠다는 뜻으로 앞에 L을 붙여주어야 한다.


예) wchar_t str[] = L"ABC"


우리가 알고 있는 대부분의 함수들은 SBCS 기반의 함수이므로, 유니코드로 프로그래밍을 하기 위해선 해당 함수에 대응하는 WBCS 기반의 문자열 조작 함수를 써주어야 한다.


프로그래밍을 할 때, SBCS 기반의 Character Set과 WBCS 기반의 Character Set을 섞어쓰지 않도록 해야한다.


예를 들면, 유니코드 문자열 출력 시 printf 함수를 사용하지 않고 wprintf 함수를 사용해야 한다.







Comments