Renci SSH.NET: кодировка символов при загрузке файлов

В настоящее время я использую Renci.SshNet для загрузки файлов и каталогов с помощью SFTP, и пока все работает нормально, за исключением проблем с кодировкой при копировании файлов, содержащих специальные символы, такие как немецкие буквы ß, ä. о. у и так далее.

Например, когда я пытаюсь загрузить каталог под названием «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;
}

person Erik    schedule 11.04.2016    source источник


Ответы (1)


SSH.NET по умолчанию использует кодировку UTF-8.

Возможно, ваш SFTP-сервер использует другую кодировку (возможно, ISO-8859-1) .

Чтобы заставить SSH.NET использовать кодировку, отличную от UTF-8, используйте перегрузку конструктора SftpClient, который принимает ConnectionInfo:

public SftpClient(ConnectionInfo connectionInfo)

И установите ConnectionInfo.Encoding по мере необходимости.


Пример кода, который вы использовали:

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

using (var sftp = new SftpClient(myConnectionInfo))
{ 
    sftp.Connect();
    ....
}
person Martin Prikryl    schedule 11.04.2016