如何从/向INI文件读/写中文/日文字符?

时间:2008-10-15 10:15:17

标签: ini

使用WritePrivateProfileString和GetPrivateProfileString导致???而不是真正的人物。

4 个答案:

答案 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显示日语字符串。

您可以发布一些代码吗?