천객만래 [千客萬來] (It has an interminable succession of visitors)

'UTF8 파일 저장'에 해당되는 글 2건

  1. 2012.05.02 [개발/MFC] UTF8로 파일저장하기
  2. 2012.01.19 [개발/vc++] 유니코드로 저장하기, UTF8로 저장하기

[개발/MFC] UTF8로 파일저장하기 


CString strFilePath = dlg.GetPathName();

 

// UTF8로 컨버팅
int nAllocLen = WideCharToMultiByte (CP_UTF8, 0, strSaveData, -1, NULL, 0, NULL, NULL);
CHAR * pBuffer = new CHAR [nAllocLen + 1];
memset (pBuffer, 0, nAllocLen);
WideCharToMultiByte (CP_UTF8, 0, strSaveData, -1, pBuffer, nAllocLen + 1, NULL, NULL);

 

// 파일로 저장
CFile file;
file.Open (strFilePath, CFile::modeCreate | CFile::modeWrite);
file.Write (pBuffer, nAllocLen);

 

// 메모리 해제
delete [] pBuffer;

Posted by SB패밀리
[개발/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패밀리