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