System.hpp에 Utf8ToAnsi 라는 함수가 있네요.
AnsiString data="3132EB9DBC";
char *u=new char[data.Length()/2+1];
u[data.Length()/2]=0;
for (int i = 0; i < data.Length()/2; i++) {
AnsiString h="0x"+data.SubString(i+1,i+2);
u[i]=h.ToInt();
}
ShowMessage(Utf8ToAnsi(u));
delete[] u;
만약 없으면... 아래와 같은 함수를 추가해서 사용하세요.
출처 :
http://snowbora.tistory.com/370
char* UTF8ToANSI(const char *pszCode, int &length)
{
BSTR bstrWide;
char* pszAnsi;
int nLength;
nLength = MultiByteToWideChar(CP_UTF8, 0, pszCode, lstrlenA(pszCode) + 1, NULL, NULL);
bstrWide = SysAllocStringLen(NULL, nLength);
MultiByteToWideChar(CP_UTF8, 0, pszCode, lstrlenA(pszCode) + 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);
length=nLength;
return pszAnsi;
}
TMRevolution 님이 쓰신 글 :
: 안녕하세요. qna에는 처음으로 질문으로 올립니다..
:
: AnsiString data = "313233414243" 의 경우
:
: HexToBin을 이용하여 2byte 씩 끊어서 "123ABC"라는 데이터는 얻어냈습니다.
:
:
: UTF-8로 이루어진 한글 HexData는 어떻게 변환해야 되는지 좀처럼 알 수가 없습니다.
:
: AnsiString data = "3132EB9DBC" // "12라" 의 경우에
:
: 똑같이 2바이트씩 HexToBin을 합쳐보기도.
: qna를 참고해서 2바이트씩 끊어서 ToIntDef로 사용해서 합쳐보았지만 숫자, 영문 부분만 정상적으로 변환되고
: 한글 부분은 깨지고 있습니다.
:
: 한글 HexData를 정상적으로 한글로 변환하려면 어떻게 해야되야 하나요?