글자는 3가지 방식으로 코딩된다.
1. SBCS - Single Byte Chacter Set -
ASKII 가 해당됨. 1바이트로 표현하기 때문에 최대 128개만 가능. 영어, 숫자 정도만 표현 가능하다.
char이 1바이트인 까닭. char* 로 문자열이 가능하다.
2. MBCS - Multi Byte Chacter Set -
SBCS에서 다른 글자도 표현하기 위해 도입. 아스키와 호환되는 것이 가장 큰 특징이고 윈도우에서도 쓰고 있다.
1바이트로는 기존 아스키를, 2바이트로는 다른 특수문자를 표현한다.
char*로 문자열을 표현한다.
3. 유니코드
모두 동등하게 2바이트 혹은 4바이트로 고정함. UTF-8이 유명. 하지만 아스키와 호환이 안됨(UTF-8 제외). 유니코드로 가는 추세지만 전환기임.
wchar로 글자 하나를, 문자열은 wchar*로 표현이 가능함.
하지만 유니코드도 종류도 많고, 유니코드라도 w_char 다루는 함수들에게 locale 정보를 줘야한다.
그래서 아래의 함수가 필요하다.
글로벌한 언어를 커버하기 위해 c++은 두가지 자료형을 준다.
하나가 TChar이고 다른 하나가 wchar.
참고로 TChar은 char과 wchar 두가지 모두 커버해서 애매모호하다고, 타입이 중요하면 쓰지 말라고 한다.
왠만하면 char만 쓰고 어쩔 수 없을 때 wchar 쓰라고.
char이 아스키 외에는 받지 못하는 것과
wchar_t에서 다른 글자가 정수와 캐릭터로 어떻게 표현되는지
아래 코드가 보여준다.
댓글 없음:
댓글 쓰기