음.. 이전에 비슷한 방법을 찾아서 해보았는데 한글 부분은 깨졌었습니다.
아예 char 배열에 직접 때려 넣었었던 것 같은데...
알려주신 방법으로 잘 됬습니다.
감사합니다.
이전에 한 것이랑 뭔 차인지 고민 좀 해야겠네요.
StarWagon 님이 쓰신 글 :
: 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를 정상적으로 한글로 변환하려면 어떻게 해야되야 하나요?