unicode 환경 컴파일 작업중 ansi 파일을 읽고 쓰는 부분을 unicode에서 읽고 쓰기가 되도록 수정 하다보니
검색해보면 대부분 BOM을 사용하는것으로 검색이 된다.
하지만 내가 필요한 내용은 BOM이 없는 파일에서 utf-8 포맷의 텍스트 파일을 읽는것이라서
다음과 같은 방식으로 수정을 했다.
CString strBuffer; // 실제 작업용 버퍼
CStringA szFileBuffer; // 파일에서 읽어들일 버퍼
CString strFilePath;
strFilePath = _T("test.txt");
CFile hFile;
DWORD n;
if(hFile.Open(strFilePath,CFile::modeRead)){
n = (DWORD)hFile.GetLength();
n = hFile.Read(szFileBuffer.GetBuffer(n), n);
szFileBuffer.ReleaseBuffer(n);
hFile.Close();
}
// utf-8 파일 내용을 unicode로 변환
strBuffer = CA2T(szFileBuffer, CP_UTF8);
// 이후 로직 처리
//파일 저장
if(hFile.Open(strFilePath,CFile::modeCreate | CFile::modeWrite )){
// unicode 문자열을 utf-8로 변환
szFileBuffer = CT2A(strBuffer, CP_UTF8);
sf.Write(szFileBuffer, szFileBuffer.GetLength());
hFile.Close();
}
unicode에서도 CFile 은 BOM 이 없으면 ansi 형식으로 데이터를 읽으므로 CStringA를 사용하도록 하는것이 핵심!!
'지식창고 > 프로그램' 카테고리의 다른 글
firefox Dns over HTTPS (DOH) 적용 하기 (0) | 2018.05.17 |
---|---|
nginx post 405 not allow 문제 (0) | 2016.11.24 |
크롬 마우스 제스쳐 확장 (0) | 2016.09.21 |
ConEmu 설정 (0) | 2016.08.31 |
Laravel - 기본 라우팅 (0) | 2015.05.19 |