UTF8 / UTF16 변환
(MFC 를 이용한 UTF8 / UTF16 문자열 변환)



Intro

 C++ 을 가지고 개발을 하다보면, 문자열의 인코딩으로 인해서 상당히 스트레스를 많이 받습니다.
어떤 프로젝트는 멀티바이트를 사용하고, 어느 프로젝트는 유니코드를, 또 어떤 프로젝트는 ANSI 를....
이렇게 각기 다른 문자열 방식을 사용하는 경우, 개발자는 미쳐버립니다. =_=


Intent

오늘은 그 중, UTF-8 과 UTF-16 사이에 문자열 변환 방법에 대해서 정리해 보겠습니다.
사실 알고리즘이라는게 따로 없으므로, 코드만 올리도록 하겠습니다.
더불어 시간이 나는데로, 추가적인 인코딩간의 변환방법에 대해서 추가로 블로깅 하도록 하겠습니다.



Source Code

[UTF16 -> UTF8]


CStringA UTF16toUTF8(const CStringW& utf16)
{
   CStringA utf8;
   int len = WideCharToMultiByte(CP_ACP, 0, utf16, -1, NULL, 0, 0, 0);
   if (len>1)
   { 
      char *ptr = utf8.GetBuffer(len-1);
   if (ptr) WideCharToMultiByte(CP_ACP, 0, utf16, -1, ptr, len, 0, 0);
      utf8.ReleaseBuffer();
   }
   return utf8;
} 





[UTF8 -> UTF16]


CStringW UTF8toUTF16(const CStringA& utf8)
{
   CStringW utf16;
   int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
   if (len>1)
   { 
      wchar_t *ptr = utf16.GetBuffer(len-1);
   if (ptr) MultiByteToWideChar(CP_UTF8, 0, utf8, -1, ptr, len);
      utf16.ReleaseBuffer();
   }
   return utf16;
} 




'Microsoft > C++' 카테고리의 다른 글

Video 썸네일 추출하기  (0) 2011.03.18
Windows 화면보호기/절전모드 방지하기  (0) 2011.02.07