2

使用WritePrivateProfileStringGetPrivateProfileString结果???代替真实字符。

4

4 回答 4

7

GetPrivateProfileString()并且WritePrivateProfileString()可以使用Unicode,有点。

如果 ini 文件是 UTF-16LE 编码的,即它有一个 UTF-16 BOM,那么这些函数将在 Unicode 中工作。但是,如果函数必须创建文件,它们将创建一个 ANSI 文件并且仅在 ANSI 中工作。

因此,要使用 Unicode 功能,请在首次使用之前创建您的 ini 文件,并向其写入 UTF-16LE 字节顺序标记。然后照常进行。

请注意,这些函数根本不适用于 UTF-8

请参阅Michael Kaplan 的博客以获取比您想知道的更多详细信息。

于 2012-01-11T15:08:20.207 回答
2

WritePrivateProfileStringW 函数将以遗留系统编码(例如,日本系统上的 Shift-JIS)写入 INI 文件,因为它是遗留支持函数。如果你想要一个完全支持 Unicode 的 INI 文件,你需要使用一个外部库。

试试 SimpleIni http://code.jellycan.com/simpleini/

它是 C++,单头文件,具有 MIT 许可证的模板库(即商业用途是可以的)。将其包含到您的源文件中并使用它。它是跨平台的,支持 UTF-8 和传统编码文件,并且可以读写 INI 文件,主要保留注释和结构等。最容易签出页面。

它已经存在了一段时间,并且似乎被相当多的人使用。我写了它并继续支持它。

于 2009-04-22T02:54:39.953 回答
1

根据WritePrivateProfileString文档,有一个 Unicode 版本:WritePrivateProfileStringW. 使用它,您应该能够使用 Unicode 字符。

于 2008-10-15T10:26:49.947 回答
0

这可能只是您如何显示或处理字符串的问题。例如,普通的控制台窗口不能用 printf 显示日文字符串。

你可以发布一些你的代码吗?

于 2008-10-15T10:18:01.713 回答