2016-12-22 9 views
2

アラビア語のフォルダを含むiniファイルにファイルパスを保存しようとしています。すなわち英語以外のC#WritePrivateProfileString()の値

D:\ملفجديد\フォルダ

をチェックしかしsettings.iniでそれを書くためにWritePrivateProfileString()を使用した後。

D:\ ??? ???? \フォルダのチェック

パスを正しく保存するにはどうすればよいですか?

編集:後

は、私はあなたがいる場合たとえば、パス

同様に、アラビア語のテキストを使用するためのSystem.Text.Encoding.GetEncoding("Arabic")を使用する必要がiniファイルを書き込むことが

[DllImport("kernel32")] 

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

settings.iniはどのコードページにありますか?それはユニコードですか? – Sefe

+0

私はそれがユニコード@Sefeだと思います – FaizanRabbani

+0

あなたはWin32 APIを使用していますか?あなたの質問にいくつかのコードを置くことができますか? – gsharp

答えて

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

私はこのことができます願っています。

+0

は、私が使用してアラビア語で値を書き込むことができました: Encoding.Default &使用してそれを読む: あなたが本当に読み取りと書き込みの両方に同じエンコーディングを使用する必要があります – FaizanRabbani

+0

Encoding.UTF8。 Encoding.Defaultの使い方を再考することをお勧めします。異なるマシン上では異なる値を持つことができるからです。また、Encoding.Defaultプロパティの注釈を参照してください:https://msdn.microsoft.com/en-us/library/system.text.encoding.default(v=vs.110).aspx –

+0

私は注意を読むが、いつ私はUTF8を使って他の文字に情報を格納する言語(英語以外)を書き込もうとします。 – FaizanRabbani

3

を使用していたコードですファイルを読み書きしたい場合

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

を使用しています。これは '.... StreamWriter(" D:\ SomePath \ settings.ini "、...)'とし、アラビア文字列を書き込むべきだと思います。 –

+0

キャッチ@PeterBありがとう、私はそれが 'YourFilePath'を作ったので確信していません:D :) –

+0

しかしそれはアラビア語に制限されますか? @MohitShrivastava – FaizanRabbani

関連する問題