2016-04-11 90 views
2

現在、Renci.SshNetを使用してSFTPを使用してファイルやディレクトリをアップロードしていますが、ドイツ語の文字のように特殊文字を含むファイルをコピーするときß、ä。 ö。 üなど。Renci SSH.NET:ファイルをアップロードする際の文字エンコーディング

たとえば、「Fünf」という名前のディレクトリをアップロードしようとすると、その名前が「Fünf」に転写されます。

文字列が正しく届くように、有効化または設定する必要のある種類のエンコードはありますか?

using (var sftp = new SftpClient(host, username, password)) 
{ 
     sftp.Connect(); 
     Stream file3 = File.OpenRead(localFileName); 
     var result = sftp.BeginUploadFile(file3, remoteFileName) as SftpUploadAsyncResult; 
} 

答えて

2

SSH.NETのデフォルトはUTF-8エンコーディングです。

あなたのSFTPサーバーで異なるエンコーディング(おそらくISO-8859-1)が使用されている可能性があります。

、SSH.NETが非UTF-8エンコーディングを使用するようConnectionInfoを取るSftpClientコンストラクタのオーバーロードを使用するには:

public SftpClient(ConnectionInfo connectionInfo) 

を、必要に応じてConnectionInfo.Encodingを設定します。


あなたが使用して終了コード例: ConnectionInfo myConnectionInfo =新しいConnectionInfo(ホスト、22、:

ConnectionInfo myConnectionInfo = 
    new ConnectionInfo(host, 22, username, new PasswordAuthenticationMethod(username, password)); 
myConnectionInfo.Encoding = System.Text.Encoding.GetEncoding("ISO-8859-1"); 

using (var sftp = new SftpClient(myConnectionInfo)) 
{ 
    sftp.Connect(); 
    .... 
} 
+1

はどうもありがとうございました、完璧に動作しますが、これは動作します私のサンプルコードですusername、new PasswordAuthenticationMethod(ユーザ名、パスワード)); myConnectionInfo.Encoding = System.Text.Encoding.GetEncoding( "ISO-8859-1"); using(var sftp = new SftpClient(myConnectionInfo)) { sftp.Connect(); – Erik

+1

ようこそ。他の読者のために私の答えにあなたのコードを追加しました。 –

+0

私はもう一つの質問があります:私のsrverはISO-8859-1のみをサポートしています。サポートされていない文字でファイル名をアップロードしようとすると、自動的に文字に変換されますか?しかし、この文字はSambaを使用してアクセスするときに問題を引き起こしています。デフォルトの文字を "_"のような別の文字に変更できますか? – Erik

関連する問題