关于Ini读取失败的问题

在项目部署过程中,突然发现GetPrivateProfileXXX 相关函数全部操作失败,错误码:2。
关于Ini读取失败的问题_第1张图片
但是可以肯定该ini文件是100%存在的,为什么呢?经过对比发现该文件格式由utf-8变为utf-8-bom。当再次将ini格式切换为utf-8之后一切由恢复正常。

结论:

GetPrivateProfileXXX函数不支持utf-8-bom编码的格式文件。

分析:

utf-8-bomutf-8文件头部增加了三个字节:0xEF, 0xBB, 0xBF标记该文件为utf-8-bom。后面内容和utf-8文件保持一致。

解决方案

  • 方案一:以rb模式读取ini文件,如果ini文件前面三个字节为0xEF, 0xBB, 0xBF则舍弃前面三个字节的内容,将文件另存为ini,之后读取新文件ini。
  • 方案二:读取ini文件内容,然后按照ini格式,解析文件内容。(可参考hv/iniparser

你可能感兴趣的:(C++,随笔,ini,utf-8,utf-8,bom)