C#WritePrivateProfileString()除英语之外的值

时间:2016-12-22 09:34:06

标签: c# .net ini

我正在尝试在 ini 文件中保存文件路径,该文件包含阿拉伯语文件夹。即。

  

D:\ملفجديد\检查文件夹

但在使用WritePrivateProfileString()将其写入 settings.ini 后。它显示路径如下:

  

d:\ ??? ???? \检查文件夹

我该怎么做才能正确保存路径?

修改

以下是我用来编写ini文件的代码

[DllImport("kernel32")]

private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);

2 个答案:

答案 0 :(得分:3)

您必须使用System.Text.Encoding.GetEncoding("Arabic")在路径

中使用阿拉伯语文本

例如,如果您想要读取和写入文件而不是

using (var reader = new System.IO.StreamReader("YourFilePath", System.Text.Encoding.GetEncoding("Arabic")))
{
}

using (var writer = new System.IO.StreamWriter("YourFilePath", true, System.Text.Encoding.GetEncoding("Arabic")))
{
}

答案 1 :(得分:1)

您可以试用my INI library,我创建它是为了拥有一个更友好(更有意义/更直观)的API,然后是那些WritePrivateProfile API。
以下是如何使用它的示例:

// Your inputs.
string section, key, val, filePath;

var iniOptions = new IniOptions();
iniOptions.Encoding = Encoding.UTF8;

var ini = new IniFile(iniOptions);
ini.Load(filePath);

IniSection iniSection = ini.Sections[section];
IniKey iniKey = iniSection.Keys[key];
iniKey.Value = val;

ini.Save(filePath);

我希望这会有所帮助。