Renci SSH.NET: 上传文件时的字符编码
Renci SSH.NET: character encoding when uploading files
我目前正在使用 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;
}
SSH.NET默认为UTF-8编码。
您的 SFTP 服务器可能使用不同的编码(可能 ISO-8859-1)。
要使 SSH.NET 使用非 UTF-8 编码,请使用采用 ConnectionInfo
:
的 SftpClient
构造函数的重载
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();
....
}
我目前正在使用 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;
}
SSH.NET默认为UTF-8编码。
您的 SFTP 服务器可能使用不同的编码(可能 ISO-8859-1)。
要使 SSH.NET 使用非 UTF-8 编码,请使用采用 ConnectionInfo
:
SftpClient
构造函数的重载
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();
....
}