유니코드 : 문자 하나당 2바이트의 공간을 확보
멀티바이트 : ANSI에서는 1바이트의 공간을 다국어에서는 2바이트의 공간을 확보
즉, 영어는 1바이트 한글은 2바이트를 확보
char
wchar_t
TCHAR
유니코드상에서 char쓰면 문제 발생 , 한 문자를 쓰는데 2바이트를 사용하므로
char 는 각 문자하나당 1바이트이다. 즉, 한 문자를 쓴다고 하는데 실제로 2바이트를 쓰니
글자가 깨져서 나온다.
멀티바이트상에서는 wchar_t를 사용할 때 문제가 발생한다.
wchar_t 는 한글자를 쓰는데 2바이트를 사용하므로 만약 영어를 wchar_t에 담고 있었다면
영어는 멀티바이트상에서 1바이트로만 표현이 가능하므로 나머지 1바이트는 0으로 채워진다.
그런데 멀티바이트상에서 이것을 NULL로 인식하기 때문에 첫번째 영어 한글자만 출력이된다.
TCHAR는 멀티바이트상에서는 char로 유니코드상에서는 wchar_t로 바뀐다.
단 wchar_t를 사용할 경우는 문자열 앞에 반드시 L 을 붙여줘야 한다.
【 프로그래밍 용어】/유니코드와 멀티바이트 차이2011. 8. 29. 13:48