【发布时间】:2022-01-23 00:48:57
【问题描述】:
我正在处理一个使用 INI 文件的遗留项目,目前我正在尝试了解 Microsoft 如何处理 INI 文件。
WritePrivateProfileStringA() [MSDN] 的文档说lpFileName:
如果文件是使用 Unicode 字符创建的,该函数会将 Unicode 字符写入文件。否则,该函数将写入 ANSI 字符。
这到底是什么意思?什么是“使用 Unicode 字符创建”的文件? Microsoft 如何确定文件是否使用 Unicode 字符创建?
由于这记录在lpFileName 下,它们是否指的是文件名中的 Unicode 字符,例如“如果文件有日文文件名,我们会将其读取为 Unicode”?
【问题讨论】:
-
没有。这个遗留的 appcompat 函数的多个讨厌的问题之一是您无法控制编码。如果文件已经存在,并且使用 UTF16 BOM 写入,则写入 UTF16,否则使用系统代码页。鸡和蛋的问题,即使是 W 版本也没有解决它。 Win3中的INI文件总是使用系统代码页,这就是为什么它如此偏重的原因。不要使用它。