천객만래 [千客萬來] (It has an interminable succession of visitors)
반응형
[개발/vc++] 유니코드로 저장하기


// 첫 식별자가 파일의 처음 부분이 "FFFE" 값이다.
그리고 두바이트씩 문자크기를 갖는다.

TCHAR szPath[] = _T("12345");
int nlen = _tcslen(szPath);

CFile file (_T("D:\\test.xml"), CFile::modeCreate|CFile::modeWrite);

TCHAR szTmp[2];
WORD wd = 0xfeff;
memcpy(szTmp, &wd, 2);
file.Write(szTmp, 2);
file.Write(szPath, nlen * sizeof(TCHAR));
file.Close();

[개발/VC++] UTF-8로 저장하기

// 헤더가 3바이트이다. 문자는 3바이트씩 저장

// utf-8로 저장
int UnicodeToUtf8(TCHAR* pUnicode, char** pUtf8)
{
int len = ::WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)pUnicode, -1, NULL, 0, NULL, NULL);
*pUtf8 = new char[len];
::WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)pUnicode, -1, *pUtf8, len, NULL, NULL);

return len;
}

// UTF 0xEFBBBF
TCHAR szTmp[2];
WORD wd = 0xbbef;
memcpy(szTmp, &wd, 2);
file.Write(szTmp, 2);
BYTE byte = 0xbf;
memcpy(szTmp, &byte, 1);
file.Write(szTmp, 1);
char *pUtf8 = NULL;
nLen = UnicodeToUtf8(szXML, &pUtf8);
file.Write(pUtf8, nLen-1);
delete []pUtf8;

반응형
Posted by 사용자 SB패밀리

댓글을 달아 주세요