Search

'[Native] C/C++/ATL'에 해당되는 글 21건

  1. 2010.06.21 유니코드에서 멀티바이트로의 변환(유니코드 변환)



필자가 회사의  ATL을 사용해서 ActiveX 파일 업로드 컨트롤을 개발하면서, 유니코드 문자열을 멀티바이트로 변환할 필요가 있어서 작성한 코드입니다.
프로젝트의 기본 Character Set을 "Use Unicode Character Set"으로 한 관계로 별도로 변환을 해야 했던 것으로 기억납니다.

[샘플 참조]

   포스트(POST) 될 데이타를 멀티바이트로 변환해서 업로드 함...
  ......  
  ......  
 
  // _T 매크로 : 기본 문자셋이 유니코드일 경우 wchar_t 으로 변환됨.
  TCHAR sContHeaderParam[2048]  = {0}; 
  _stprintf(sContHeaderParam, _T("\r\n-----------------------------7d425b3bf0cdc\r\nContent-Disposition: form-data; name=\"XMDocID\"\r\n\r\n%s"), XMDocID); 

  // 멀티바이트(char*)로 변환시 사이즈 가져오기.
  int AnsiStrSize = WideCharToMultiByte(CP_ACP, 0, sContHeaderParam, -1, NULL, 0, NULL, NULL); 

  char *AnsiStrHeaderParam = new char[AnsiStrSize+1];  // 가져온 사이즈로 메모리 할당.
  memset(AnsiStrHeaderParam, 0, AnsiStrSize+1);      // 초기화.
  WideCharToMultiByte(CP_ACP, 0, sContHeaderParam, -1, AnsiStrHeaderParam, AnsiStrSize, 0, 0);  //변환

  ........
  // 모든 작업이 마무리된 후에 메모리 해제.
  free(AnsiStrHeaderParam);


  결국, wchar_t 문자열을 char*로 변환하는 것임.