2016-04-11 12 views
2

Ich bin derzeit Renci.SshNet Dateien und Verzeichnisse laden SFTP, und alles funktioniert so weit in Ordnung, mit Ausnahme von Ausgaben Codierung, wenn Dateien mit Sonderzeichen, wie die deutschen Buchstaben kopieren ß, ä. O. ü, und so weiter.Renci SSH.NET: Zeichencodierung, wenn das Hochladen von Dateien

Zum Beispiel, wenn ich versuche, ein Verzeichnis zu laden namens „Fünf“, wird der Name auf „Fünf“ transkribiert.

Gibt es irgendeine Art von Codierung muss ich aktivieren oder so eingestellt, dass meine Saiten richtig ankommen?

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

Antwort

2

Die SSH.NET verwendet standardmäßig UTF-8-Codierung.

Ihr SFTP-Server verwendet möglicherweise eine andere Kodierung (vielleicht ISO-8859-1).

Um SSH.NET eine nicht-UTF-8-Codierung verwenden, eine Überladung des SftpClient Konstruktor verwenden, die ConnectionInfo nimmt:

public SftpClient(ConnectionInfo connectionInfo) 

und legen Sie den ConnectionInfo.Encoding nach Bedarf.


Beispiel Code, den Sie am Ende mit:

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

Vielen Dank, sehr gut funktioniert, das ist mein Beispielcode, der funktioniert: Connection myConnectionInfo = new Connection (Host, 22, Benutzername, neues PasswordAuthenticationMethod (Benutzername, Passwort)); myConnectionInfo.Encoding = System.Text.Encoding.GetEncoding ("ISO-8859-1"); Verwendung (var SFTP = new SftpClient (myConnectionInfo)) { sftp.Connect(); – Erik

+1

Gern geschehen. Ich habe Ihren Code zu meiner Antwort hinzugefügt, zum Vorteil anderer Leser. –

+0

Ich habe eine zusätzliche Frage: mein srver unterstützt nur ISO-8859-1, wenn ich versuche, Dateinamen mit nicht unterstützten Zeichen hochzuladen, werden sie automatisch in das Zeichen konvertiert? Dieses Zeichen verursacht jedoch Schwierigkeiten beim Zugriff mit Samba, kann ich es auf ein anderes Zeichen wie "_" voreinstellen? – Erik