|
답변 감사드립니다. ^.^
이것 저것 막 하다 보니 질문 소스중 잘못된 부분이 있네요.
String HTML = ㅣ"★ ⑴ 100자리 다음에 and [ǝnd, ǝn]가 옴. 그러나 美에서는 종종 생략. ⑵ 100의 자리가 0일 때는 1,000자리 다음에 and가 옴.";
AnsiString 이 아니라 String 으로 작업 중입니다.
말씀 주신것처럼 UTF8 로 변환하여
char *buf = new char[HTML.Length()];
UnicodeToUtf8(buf, HTML.c_str(), HTML.Length());
mstm->Write(buf, HTML.Length());
하니,, [ǝnd, ǝn] 과 더불어 한글도 모두 네모로 ㅠ.ㅠ.... 변하네요.. 어떻게 풀어야 할지.....
답글 거듭 감사합니다..^.^
김도완 님이 쓰신 글 :
: 문자열을 utf-8 인코딩해서 넘겨보면 어떨까요?
:
: 넘초보 님이 쓰신 글 :
: : TWebBrowser 에 동적으로 할당된 유니코드 문자열을 보여주려 합니다.
: :
: : 검색결과 아래 두가지 방법으로 정상 동작 합니다만..... [ǝnd, ǝn] 와 같은 유니코드가 깨져(물음표로) 보이네요.
: :
: : 어찌 풀어야 할까요? 도움 기다립니다.
: :
: : AnsiString HTML = ㅣ"★ ⑴ 100자리 다음에 and [ǝnd, ǝn]가 옴. 그러나 美에서는 종종 생략. ⑵ 100의 자리가 0일 때는 1,000자리 다음에 and가 옴.";
: :
: : // 1번째 방법
: : WebBrowser1->Navigate(L"about:blank");
: : while(WebBrowser1->Busy) Application->ProcessMessages();
: : TMemoryStream* mstm = new TMemoryStream();
: : mstm->Write(HTML.c_str(), HTML.Length());
: : mstm->Seek(0, soFromBeginning);
: : IPersistStreamInit* pPersistStreamInit = NULL;
: : TStreamAdapter *IStr = new TStreamAdapter(mstm, soReference);
: : WebBrowser1->Document->QueryInterface(IID_IPersistStreamInit, (void**)&pPersistStreamInit);
: : pPersistStreamInit->Load(*IStr);
: : pPersistStreamInit->Release();
: : pPersistStreamInit = NULL;
: : delete mstm;
: :
: : // 2번째 방법
: : WebBrowser1->Navigate(L"about:blank");
: : while(WebBrowser1->ReadyState != Shdocvw::READYSTATE_COMPLETE) Application->ProcessMessages();
: :
: : HANDLE hMem = GlobalAlloc(GMEM_MOVEABLE | GMEM_NODISCARD, HTML.Length());
: : if(!hMem ) return;
: :
: : void *ptr = GlobalLock(hMem);
: : memcpy(ptr, HTML.c_str(), HTML.Length());
: :
: : GlobalUnlock(hMem);
: : TComInterface<IStream> pStream;
: : if( FAILED(CreateStreamOnHGlobal(hMem, TRUE, &pStream))){
: : GlobalFree(hMem);
: : return ;
: : }
: :
: : TComInterface<IPersistStreamInit> pPersistStreamInit;
: : if(FAILED(WebBrowser1->Document->QueryInterface(IID_IPersistStreamInit, (void**)&pPersistStreamInit))) return;
: :
: : SUCCEEDED(pPersistStreamInit->Load(pStream));
|