Microsoft MVP성태의 닷넷 이야기
VC++: 41. UTF-8 포맷의 INI 파일에 대한 GetPrivateProfile... API 사용 불가 [링크 복사], [링크+제목 복사],
조회: 39337
글쓴 사람
정성태 (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

... 181  182  183  184  185  186  187  188  189  190  191  192  [193]  194  195  ...
NoWriterDateCnt.TitleFile(s)
146정성태4/29/200517394VS.NET IDE: 29. 네트워크 공유를 다른 사용자 계정으로 다시 로그인을 원하는 경우.
144정성태4/14/200517795VS.NET IDE: 28. Windows 2003 SP1을 설치하고.
143정성태5/5/200519054.NET Framework: 38. DSL (Domain Specific Language)
141정성태4/14/200519857VS.NET IDE: 27. 64bit 컴퓨터 사용 평가 [3]
140정성태4/14/200516962.NET Framework: 37. String.GetHashCode의 리턴값. 그때그때 다릅니다.
138정성태4/12/200517732.NET Framework: 36. 64bit 시스템 구성
142정성태4/14/200519111    답변글 VS.NET IDE: 36.1. 메모리 구성에 대한 추가 내용
137정성태3/31/200523408.NET Framework: 35. XP SP2 팝업 뚫은 소스
135정성태3/31/200522139VS.NET IDE: 26. SQL Server 2000구성이 실패
134정성태3/31/200519311COM 개체 관련: 16. Microsoft.XMLHTTP 개체에서 Microsoft.XMLDOM 개체를 전송할 때 charset 지정 문제? [2]
128정성태3/30/200517856.NET Framework: 34. VC++에서 Managed 타입의 메서드에 BSTR을 넘기는 경우의 오류(!)
129정성태3/30/200519958    답변글 .NET Framework: 34.1. 위의 질문에 대한 답변으로 나온 것입니다.
130정성태3/30/200517094        답변글 .NET Framework: 34.2. 다시... 제가 질문한 내용입니다. ^^
131정성태3/30/200517614            답변글 .NET Framework: 34.3. 다시... 정봉겸님이 하신... 명확한 답변입니다.
126정성태3/26/200517435.NET Framework: 33. Proxy 환경에서의 Smart Client 업데이트 문제 [1]
133정성태3/31/200518600    답변글 .NET Framework: 33.1. [추가]: Proxy 환경에서의 Smart Client 업데이트 문제 [2]
125정성태3/26/200517728VC++: 15. VC++ Keyword
124정성태3/25/200518121.NET Framework: 32. 네트워크 공유 없이 상대 컴퓨터에 프로그램 설치
119정성태3/21/200517733.NET Framework: 31. 소스세이프 오류현상: 웹 프로젝트를 열수 없습니다.
120정성태3/21/200519162    답변글 .NET Framework: 31.1. 소스세이프 오류현상: PDB 파일이 잠기는 문제
121정성태3/21/200518973    답변글 .NET Framework: 31.2. 소스세이프 오류현상: VS.NET 2003 IDE 와 연동되는 소스세이프 버전 문제
122정성태3/21/200517692    답변글 .NET Framework: 31.3. 소스세이프 관련 사이트
160정성태11/14/200520724    답변글 VS.NET IDE: 31.4. [추가]: 웹 애플리케이션 로드시 "_1"을 붙여서 묻는 경우. [1]
196이문석12/23/200517462        답변글 .NET Framework: 31.8. [답변]: [추가]: 웹 애플리케이션 로드시 "_1" 을 붙여서 묻는 경우.
167정성태10/10/200517150    답변글 .NET Framework: 31.5. [추가]: 삭제한 웹 가상 디렉터리에 대해 동일한 이름으로 웹 공유를 설정할 때 - 이미 있다고 오류발생
190정성태12/11/200516345    답변글 VC++: 31.6. ASP.NET 소스세이프 오류현상: 다른 사람이 체크아웃 한 것을 또 다른 사람이 체크아웃 가능!
... 181  182  183  184  185  186  187  188  189  190  191  192  [193]  194  195  ...