컴퓨터로 문자를 표현하는 법
개요컴퓨터는 언제나 0과 1만 인식할 수 있다. 모든 문자는 이진수로 변환되어 저장되고 이진수가 다시 문자로 변환되어 우리에게 보이게 된다. 이 과정을 문자 인코딩, 문자 디코딩이라고 한
basaeng.tistory.com
전에 포스팅 했던 내용 처럼 컴퓨터로 문자를 표현하는 법은 여러가지 방법으로 발전해왔다.
C에서는 ASCII, UNICODE 같은 다양한 문자 인코딩 방식에 대응하도록 프로그래밍할 수 있다.
Character Set 표현방법
SBCS(Single Byte Character Set)
문자를 표현할 때 1바이트를 사용하는 방식이다.
MBCS(Multi Byte Character Set)
문자를 표현할 때 1~2바이트를 사용하는 방법이다.
영어처럼 기존의 문자는 1바이트, 한글과 같은 언어는 2바이트로 표현한다.
WBCS(Wide Byte Character Set)
모든 문자를 2바이트를 사용해 표현하는 방식이다.
유니코드 기반 문자열은 이 WBCS기반 문자열이다.
MBCS -> WBCS
MBCS는 효율적으로 데이터를 표현하지만 C에서 str계열 함수 등 영어는 1바이트 다른 언어는 2바이트로 처리하는 경우 등 코드를 만들 때 신경써야 할 부분들이 많다.
현대 프로그래밍에서는 MBCS에서 가져올 수 있는 메모리 상 이점보다, 전세계 언어를 일관되게 지원해 개발의 편의성을 높여주는 WBCS 방식을 많이 사용한다.
WBCS 프로그래밍
레거시 프로그램들은 MBCS를 사용하는 경우도 있기 때문에 코드를 작성할 때 MBCS와 WBCS를 모두 지원할 필요가 있다.
이를 위해 C에서는 _UNICODE가 정의되었는지에 따라 MBCS, WBCS 방식을 선택해서 사용할 수 있도록 함수들이 만들어져있다.
#ifdef _UNICODE
#define _tprintf wprintf
#else
#define _tprintf printf
#endif
https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/using-generic-text-mappings?view=msvc-170
일반 텍스트 매핑 사용
C 런타임의 데이터 형식, 루틴 및 기타 개체에 대한 Microsoft 관련 매핑을 소개합니다.
learn.microsoft.com
따라서 앞으로 유니코드 방식을 지원하기 위해 _t 계열 함수를 사용하도록 하자.
main또한 _tmain으로 선언하면 프로그램 실행 시 전달되는 인자 argv를 유니코드 형태로 받을 수 있다.
'C, C++ > 뇌를 자극하는 윈도우즈 시스템 프로그래밍' 카테고리의 다른 글
| [뇌를 자극하는 윈도우즈 시스템 프로그래밍] 6장 - 커널 오브젝트와 오브젝트 핸들 (0) | 2025.05.20 |
|---|---|
| [뇌를 자극하는 윈도우즈 시스템 프로그래밍] 5장 - 프로세스의 생성과 소멸 (0) | 2025.05.20 |
| [뇌를 자극하는 윈도우즈 시스템 프로그래밍] 4장 - 컴구조(2) (0) | 2025.05.17 |
| [뇌를 자극하는 윈도우즈 시스템 프로그래밍] 3장 WIN32 vs WIN64 (0) | 2025.05.15 |
| [뇌를 자극하는 윈도우즈 시스템 프로그래밍] 1장. 컴구조(1) (0) | 2025.04.29 |