원본글 주소 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=347475&ref=347475
CFindFile을 통해서 GetFileName 메소드를 통하면, CString을 리턴해주는데, 프로젝트가 _UNICODE로 선언되어 있지 않으면, CString이 ANSI형으로 리턴된다.
그러면 유니코드가 제대로 인식되지 않는 문제가 발생한다.
이럴 경우엔, 프로젝트 전체를 유니코드로 변경해주는게 정석인데, 다른 라이브러리들이 물려있는 경우엔, 이마저도 쉽지 않다.
그러니 아래처럼 해보자.
HANDLE hFind;
WIN32_FIND_DATAW FindFileData;
hFind = FindFirstFileW( L"F:/*.txt", &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("Invalid File Handle. GetLastError reports %d\n", GetLastError ());
return (0);
}
else
{
while( true )
{
std::wcout << L"Find File = " << FindFileData.cFileName << std::endl;
if( FindNextFileW( hFind, &FindFileData ) == false )
break;
}
FindClose(hFind);
return (1);
}
위 코드는 굳이 설명하지 않겠다. MessageBoxW를 이용하여 파일명을 띄워보자.
유니코드를 정상적으로 출력하는 것을 확인할 수 있을 것이다.
댓글 없음:
댓글 쓰기