UNICODE와 MCBS
Posted on 2013. 4. 12. 11:02
Filed Under Visual C++
컨트롤에서 한글이 깨지는 문제시,
Multibyte와 UniCode의 차이점입니다.
Multybyte는 영문 1 byte, 한글 2byte를 씁니다.
그러나 UniCode는 영문한글 모두 2byte를 쓰지요.
이 때문에 각 컨트롤이 원하는 바를 맞추지 못하면 한글이 깨지게 된답니다.
대표적으로 pszText는 Multybyte 형태의 자료형입니다.
그에 비해 LPWSTR 는 Unicode지요.
프로젝트 생성 후 아무런 설정을 건드리지 않았다면 프로그램은 기본적으로
UniCode 로 작성하도록 합니다. (호환성에는 좋거든요.)
그러나 ListCtrl은 Multibyte를 사용합니다.
그 때문에 UniCode를 Multibyte로 바꿔서 값을 넣어줘야 합니다.
바꾸는 방법은
USE_CONVERSION; // A2W, W2A를 사용하기 위해 먼저 선언한다.
A2W ( Multy를 Unicode로)
W2A (Unicode를 Multy로)
를 사용하면 됩니다.
USE_CONVERSION;
CString strValue; // 프로젝트 설정에 따라 형태가 결정됩니다. 아마도 UniCode일 것입니다.
strValue.Format( _T( "%s" ), W2A(itemp));
출처: 네이버 지식IN
반응형