使用WritePrivateProfileString
和GetPrivateProfileString
结果???
代替真实字符。
4 回答
GetPrivateProfileString()
并且WritePrivateProfileString()
可以使用Unicode,有点。
如果 ini 文件是 UTF-16LE 编码的,即它有一个 UTF-16 BOM,那么这些函数将在 Unicode 中工作。但是,如果函数必须创建文件,它们将创建一个 ANSI 文件并且仅在 ANSI 中工作。
因此,要使用 Unicode 功能,请在首次使用之前创建您的 ini 文件,并向其写入 UTF-16LE 字节顺序标记。然后照常进行。
请注意,这些函数根本不适用于 UTF-8。
请参阅Michael Kaplan 的博客以获取比您想知道的更多详细信息。
WritePrivateProfileStringW 函数将以遗留系统编码(例如,日本系统上的 Shift-JIS)写入 INI 文件,因为它是遗留支持函数。如果你想要一个完全支持 Unicode 的 INI 文件,你需要使用一个外部库。
试试 SimpleIni http://code.jellycan.com/simpleini/
它是 C++,单头文件,具有 MIT 许可证的模板库(即商业用途是可以的)。将其包含到您的源文件中并使用它。它是跨平台的,支持 UTF-8 和传统编码文件,并且可以读写 INI 文件,主要保留注释和结构等。最容易签出页面。
它已经存在了一段时间,并且似乎被相当多的人使用。我写了它并继续支持它。
根据WritePrivateProfileString
文档,有一个 Unicode 版本:WritePrivateProfileStringW
. 使用它,您应该能够使用 Unicode 字符。
这可能只是您如何显示或处理字符串的问题。例如,普通的控制台窗口不能用 printf 显示日文字符串。
你可以发布一些你的代码吗?