Microsoft MVP성태의 닷넷 이야기
VC++: 41. UTF-8 포맷의 INI 파일에 대한 GetPrivateProfile... API 사용 불가 [링크 복사], [링크+제목 복사],
조회: 42515
글쓴 사람
정성태 (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)
591정성태7/24/200821883오류 유형: 57. VS.NET 2008 TFC - 체크인 시에 비프 음과 함께 정지되는 현상
592정성태7/28/200821592    답변글 오류 유형: 57.1. VS.NET 2008 TFC - 체크인 시에 비프 음과 함께 정지되는 현상 [1]
590정성태7/20/200827753.NET Framework: 103. WPF - ControlTemplate을 코드에서 다뤄보기 [1]
589정성태6/17/200824402.NET Framework: 102. COM 개체의 이벤트를 구독하는 코드 제작 [1]
588정성태6/13/200826570VC++: 35. COM 이벤트에서 반환값을 가진 콜백 정의
587정성태6/10/200831126VS.NET IDE: 56. C#에서 아쉬운 __DATE__, __TIME__ 매크로 [2]
586정성태6/4/200828810오류 유형: 56. WPF 디자이너 - The string was not recognized as a valid DateTime [2]
585정성태6/4/200837077.NET Framework: 101. WPF - ActiveX 컨트롤 호스팅하는 방법 [2]
582정성태5/16/200828996오류 유형: 55. Windowless ActiveX controls are not supported
580정성태4/24/200827961VC++: 34. 64비트 윈도우즈에서의 이벤트 후킹
579정성태4/24/200827858VC++: 33. 변환 후의 RGS 파일 내용을 얻는 방법
577정성태4/16/200828744.NET Framework: 100. XML Serializer를 이용한 값 복사 [5]
575정성태4/7/200825832오류 유형: 54. TFS Source Control - 명령을 사용할 수 없음 [2]
574정성태3/31/200824069오류 유형: 53. TFS 연결 오류 - The workspace [...] exists on computer [...]
573정성태3/25/200828436Windows: 31. TS Web Access와 UAC [1]
570정성태3/17/200827169오류 유형: 52. TFS 연결 오류 - TF31001 [2]
569정성태3/16/200828463Team Foundation Server: 24. TFS 2008로 마이그레이션 (2) [2]
566정성태2/28/200829562.NET Framework: 99. AppDomain.GetEntryAssembly()를 우회하는 방법파일 다운로드1
564정성태2/16/200829273Windows: 30. TS Web Access + Vista SP1 [2]
563정성태2/16/200828777오류 유형: 51. Vista(UAC) + 웹 프로젝트 디버깅: System.UnauthorizedAccessException
562정성태2/12/200832715Windows: 29. Windows Server 2008 설치 [4]
561정성태1/10/200826375오류 유형: 50. IE 7 + 잘못된 HTC 파일 경로 = File not found [5]
559정성태1/1/200831348Windows: 28. Vista에서 끌어다 놓기로 GAC 등록하는 방법 [2]
558정성태1/1/200848419개발 환경 구성: 33. 32bit/64bit OLE DB Provider [1]
557정성태12/22/200726792개발 환경 구성: 32. WSCF와 VS.NET 2008
556정성태12/16/200724729기타: 22. 인기 순위 정리 : 조회수 1000 회 이상
... 166  167  168  169  170  171  172  173  174  175  176  177  178  179  [180]  ...