안녕하세요

프로그램 과정에서 막혔던 문제들에 대한 해결책 정리


페이지 목록

2013년 2월 7일 목요일

UTF-8 에서 한글 깨짐 문제 처리

UTF-8 에서 한글이 깨져서 나오는 문제를
Ansi(EUC-KR)로 바꿔서 처리하는 코드입니다.

#include <WTypes.h >
#include <oleauto.h>

위 두 헤더 파일을 include 하고,

char* UTF8ToANSI(char *pszCode)
{
    BSTR    bstrWide;
    char*   pszAnsi;
    int     nLength;
    // Get nLength of the Wide Char buffer
    nLength = MultiByteToWideChar(CP_UTF8, 0, pszCode, lstrlen(pszCode) + 1,
                                  NULL, NULL);
    bstrWide = SysAllocStringLen(NULL, nLength);
   // Change UTF-8 to Unicode (UTF-16)
    MultiByteToWideChar(CP_UTF8, 0, pszCode, lstrlen(pszCode) + 1, bstrWide,
                       nLength);
    // Get nLength of the multi byte buffer
    nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL);
    pszAnsi = new char[nLength];
    // Change from unicode to mult byte
    WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, pszAnsi, nLength, NULL, NULL);
    SysFreeString(bstrWide);
    return pszAnsi;
}

해당 코드를 추가 하면 됩니다.

이틀을 찾아 해메던, 한글 깨짐 문제를 드디어 해결하였습니다.

사랑합니다. 이광진님

출처: http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=657497&ref=657497