Microsoft MVP성태의 닷넷 이야기
VC++: 41. UTF-8 포맷의 INI 파일에 대한 GetPrivateProfile... API 사용 불가 [링크 복사], [링크+제목 복사],
조회: 44566
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)
UTF-8 포맷의 INI 파일에 대한 GetPrivateProfile... API 사용 불가

다음과 같은 이유로 인해서 시스템 설정을 바꿨기 때문에, 저는 습관적으로 파일을 UTF-8 포맷으로 저장합니다.

개발자 PC 환경 - 유니코드(Unicode)를 위한 설정
; https://www.sysnet.pe.kr/2/0/762

이런 습관이 안 좋을 때도 있군요. ^^ 최근에, 다음과 같은 Win32 API들을 사용하면서 고생 좀 했습니다.

  • GetPrivateProfileInt
  • GetPrivateProfileSection
  • GetPrivateProfileSectionNames
  • GetPrivateProfileString
  • GetPrivateProfileStruct

위의 API들에 UTF-8로 저장된 INI 파일을 지정하게 되면 무조건 NULL 값이 나오고, GetLastError 값은 2 (The system cannot find the file specified.)가 반환됩니다.

해결책은? 없습니다.

대신, UTF-8 포맷은 사용해서는 안되고 ANSI 파일로 저장하거나 UNICODE 파일로 저장하면 해결됩니다. 만약, 절대로 UTF-8 포맷을 고수하셔야 하는 상황이라면? 위의 API를 사용하지 마시고, 사용자 정의 INI Parser를 만들거나 그에 상응하는 라이브러리를 사용해야 합니다.



[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/1/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2010-09-15 11시09분
[ryujh] 안녕하세요.

서명있는 UTF-8, 서명없는 UTF-8 모두 같은 현상입니까?
[guest]
2010-09-15 11시36분
이론상으로 보면. ^^
서명이 없다는 것은 BOM이 없으니 일반 ASCII 파일처럼 읽혀지겠지요. 그렇다면 영문 알파벳처럼 UTF-8에서도 동일한 코드값을 유지하는 문자들은 정상적으로 읽혀지겠지만, 한글과 같이 인코딩이 들어가는 값들은 모두 깨질 것입니다.
kevin25

... 166  167  168  169  170  171  172  173  174  175  176  177  178  [179]  180  ...
NoWriterDateCnt.TitleFile(s)
641정성태1/7/200928082기타: 27. D820 - A09 바이오스 업데이트 프로그램 패치 [2]
640정성태1/4/200930000Team Foundation Server: 29. ClickOnce 응용 프로그램 배포를 Team Build에 추가.
639정성태1/4/200927934Team Foundation Server: 28. PFX 코드 서명을 포함한 프로젝트의 팀 빌드 실패 - MSB4018
638정성태1/3/200931021.NET Framework: 119. WPF - 의존 속성 정의에서 XamlParseException 발생하는 예 [2]
637정성태1/1/200933652기타: 26. 2008년 인기 순위 정리
636정성태12/31/200828621.NET Framework: 118. 2진 검색을 이용한 리스트 정렬 삽입파일 다운로드1
635정성태12/29/200831450오류 유형: 66. 파일 암호화 오류 - Recovery policy configured for this system contains invalid recovery certificate
634정성태12/29/200845686기타: 25. 가상 키보드 관련 정리 [4]
633정성태12/20/200834573기타: 24. RMClock for x64 [3]
632정성태12/19/200840245기타: 23. D820 - 배터리 없이 바이오스 업데이트 방법 [2]파일 다운로드1
631정성태12/10/200848788VC++: 36. Detours 라이브러리를 이용한 Win32 API - Sleep 호출 가로채기 [3]
630정성태12/9/200829284.NET Framework: 117. WPF - TreeView에서 항목이 펼쳐질 때 Cursors.Wait 사용파일 다운로드1
629정성태12/7/200839004.NET Framework: 116. 소켓 연결 시간 제한
628정성태12/6/200826669.NET Framework: 115. Marshal 타입 관련 2가지 자원 해제 메서드파일 다운로드1
627정성태12/6/200829662VS.NET IDE: 58. VS.NET IDE 팁 - 커서 위치 이동 [1]
626정성태12/6/200829647오류 유형: 65. TF53018: The application tier XXXXXXX is attempting to connect to a data tier with an incompatible version
625정성태12/6/200829858오류 유형: 64. TFS 2008 SP1 설치 - MsiApplyMultiplePatches returned 0x643
624정성태12/5/200830914.NET Framework: 114. WPF 이벤트에 속한 핸들러 확인 [2]파일 다운로드1
623정성태12/4/200835204디버깅 기술: 22. VS.NET SP1 + .NET Framework 소스 코드 디버깅 [2]파일 다운로드1
622정성태12/1/200838222오류 유형: 63. WPF - XamlParseException 대응 방법 [2]
621정성태11/30/200829811Team Foundation Server: 27. TeamBuild + VDPROJ 셋업 프로젝트 [1]
620정성태11/30/200828810디버깅 기술: 21. 올바른 이벤트 예외 정보 출력
619정성태11/30/200828053디버깅 기술: 20. 예외 처리를 방해하는 WPF Modal 대화창파일 다운로드1
618정성태11/29/200828924.NET Framework: 113. 이벤트에 속한 이벤트 핸들러 확인파일 다운로드1
617정성태11/26/200836426.NET Framework: 112. How to Interop DISPPARAMS [2]파일 다운로드2
616정성태11/26/200828360디버깅 기술: 19. C++/CLI - F11 디버깅 시의 변수 초기화파일 다운로드1
... 166  167  168  169  170  171  172  173  174  175  176  177  178  [179]  180  ...