참고 : http://six605.tistory.com/309
3. 유니코드 문자를 텍스트 파일로 저장할 때 주의해야 할점
- 파일에 유니코드를 관리할 때 바이너리 모드르 다루어야 한다.
- 유니코드 텍스트파일의 첫 헤더의 경우 일반 아스키 텍스트파일과 틀리다.
: 즉, 파일의 첫 부분에 16진수 0xFEFF 를 기록해야 해당 파일이 유니코드로 작성된 텍스트 파일임을
시스템이 파악한다.
cf) 플랫폼 별로 Big-Endian 시스템에서는 0xFEFF 를 기록하고, Little-Endian 시스템 에서는 0xFFFE 를 기록한다.
윈도우 메모장은 이 두가지 형식을 다 지원하므로 어떤 값을 기록해도 유니코드로 인식하며, 파일을 읽을 수 있다.
FILE *fp;
String strSrcFileName = "test1.txt";
fp = _wfopen(strSrcFileName.w_str(), L"wb");
WORD mark = 0xFEFF;
fwrite(&mark, sizeof(WORD), 1, fp);
fwprintf(fp, L"파일출력12345");
fclose(fp);
김동석 님이 쓰신 글 :
: FILE *fp;
: AnsiString strSrcFileName;
: strSrcFileName.sprintf("test.txt");
: fp = fopen(strSrcFileName.c_str(), "W+t");
: fprintf(fp,"파일내용");
: fclose(fp);
:
:
: 기본적으로 Text파일은 밑에 4종류 형식으로 나뉘어지는데요.
: ANSI
: UTF-8
: Unicode
: Unicode (Big Endian)
:
: 위에 소스방식으로 현재 파일을 생성하는데 ANSI 방식으로 파일이 만들어지는거 같은데,
:
: 이건 Unicode 형식으로 만들려면 어찌 해야되나요?
|