https://ansur.blogspot.com/2020/04/mfc-ansi-utf8.html
이번에 이야기 할것은 웹에서 데이터가 들어올때는 UTF8 코드 페이지로 기본적으로 들어 올겁니다.
이떄 가지고 계신 시스템이 Ansi 코드 페이지로 운영이 되시면 문자열 변환을 해야 합니다.
그 처리 방법에 대한 코드를 설명 하고자 합니다.
일단 UTF8 문자열을 Ansi 문자열로 변환 하는 코드 입니다.
BSTR bstrWide; char* pszAnsi; int nLength; nLength = MultiByteToWideChar(CP_UTF8, 0, sUTF8Str, lstrlen(sUTF8Str) + 1, NULL, NULL); bstrWide = SysAllocStringLen(NULL, nLength); MultiByteToWideChar(CP_UTF8, 0, sUTF8Str, lstrlen(sUTF8Str) + 1, bstrWide, nLength); nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL); pszAnsi = new char[nLength]; WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, pszAnsi, nLength, NULL, NULL); SysFreeString(bstrWide);
위 코드와 같이 변환을 하시면 마지막에 pszAnsi 포인터에 담긴 변수의 값을 시스템 내부에서 사용 하시면 됩니다.
코드의 처리는 먼저 UTF8로 들어온 문자열을 UniCode 형태로 변환을 합니다.
그다음 UniCode로 변환된 값을 다시 멀티 바이트로 변환 하는데 이떄 Ansi 코드 페이지를 이용하여 변환 하는 방식입니다.
그럼 ^^;
댓글 없음:
댓글 쓰기