在项目部署过程中,突然发现GetPrivateProfileXXX 相关函数全部操作失败,错误码:2。

但是可以肯定该ini文件是100%存在的,为什么呢?经过对比发现该文件格式由utf-8变为utf-8-bom。当再次将ini格式切换为utf-8之后一切由恢复正常。
结论:
GetPrivateProfileXXX函数不支持utf-8-bom编码的格式文件。
分析:
utf-8-bom在utf-8文件头部增加了三个字节:0xEF, 0xBB, 0xBF标记该文件为utf-8-bom。后面内容和utf-8文件保持一致。
解决方案
- 方案一:以
rb模式读取ini文件,如果ini文件前面三个字节为0xEF, 0xBB, 0xBF则舍弃前面三个字节的内容,将文件另存为ini,之后读取新文件ini。 - 方案二:读取ini文件内容,然后按照ini格式,解析文件内容。(可参考
hv/iniparser)
在项目部署中遇到GetPrivateProfileXXX函数读写ini文件失败,错误码为2。问题出在ini文件由utf-8转为utf-8-bom编码导致。分析表明utf-8-bom的三个字节标记导致了问题。提出的解决方案包括:以rb模式读取并去除bom头,或者直接解析ini文件内容。

1852

被折叠的 条评论
为什么被折叠?



