2016-12-22 3 views
2

Ich versuche, einen Dateipfad in ini Datei zu speichern, die einen Ordner in arabischer Sprache enthält. das heißtC# WritePrivateProfileString() Wert als englische Sprache

D: \ ملف جديد \ prüfen Ordner

Aber nach WritePrivateProfileString() mit ihm in settings.ini zu schreiben. Es zeigt den Pfad wie folgt an:

D: \ ??? ???? \ Ordner überprüfen

Was soll ich tun, um den Pfad korrekt zu speichern?

Edit:

Im Folgenden finden Sie den Code I ini-Datei

[DllImport("kernel32")] 

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

Welche Codepage ist settings.ini? Ist es Unicode? – Sefe

+0

Ich denke, es ist Unicode @Sefe – FaizanRabbani

+0

Verwenden Sie Win32-API? Kannst du Code in deine Frage einfügen? – gsharp

Antwort

1

Sie könnten my INI library ausprobieren, ich habe es erstellt, um eine freundlicher (und sinnvoller/intuitiver) API als diese WritePrivateProfile-APIs zu haben.
Hier ist ein Beispiel, wie Sie es verwenden können:

// 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); 

Ich hoffe, das hilft.

+0

konnte ich Wert in arabischer Sprache schreiben, indem Sie: Encoding.Default & lesen sie unter Verwendung: Encoding.UTF8 – FaizanRabbani

+0

Sie wirklich die gleiche Codierung für Lesen und Schreiben verwendet werden soll. Außerdem würde ich Ihnen empfehlen, die Verwendung von Encoding.Default zu überdenken, da es auf verschiedenen Maschinen unterschiedliche Werte haben kann.Siehe auch die Bemerkungen der Encoding.Default-Eigenschaft: https://msdn.microsoft.com/en-us/library/system.text.encoding.default(v=vs.110).aspx –

+0

Ich lese die Bemerkungen, aber wann Ich versuche, Sprache zu schreiben (anders als Englisch) mit UTF8 speichert es die Informationen in anderen Zeichen – FaizanRabbani

3

Sie haben zu schreiben, bin mit System.Text.Encoding.GetEncoding("Arabic") verwenden, um zum Beispiel Arabisch Text im Pfad

Wie zu verwenden, wenn Sie möchten die Datei lesen und in die Datei schreiben als

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"))) 
{ 
} 
+0

Ich denke, das sollte '.... StreamWriter (" D: \ SomePath \ settings.ini ", ...)' und dann schreiben Sie die arabische Zeichenfolge hinein. –

+0

Danke für den Fang @PeterB, aber wir sind nicht sicher, so habe ich es 'YourFilePath': D :) –

+0

Aber es wird nur auf Arabisch beschränkt werden? @MohitShrivastava – FaizanRabbani

Verwandte Themen