WPF C#中的FTP客户端不会打开带有重音字符的文件夹

时间:2015-07-16 16:14:13

标签: c# ftp client character

有一天,FileZilla决定不让我下载。 (右键单击,“下载”是灰色的),所以我下载了SmartFTP,但我真的不喜欢它。

所以我问自己,为什么不做一个?所以,我已经半工作了(可以连接到ftp服务器,下载,上传,进出文件夹,创建目录),但是,它无法打开带有重音和/或特殊字符的文件夹( á,é,ö,#等等,它们也出现在列表框中:“Adatb?ziskezel?s”,而windows中的内置内容则显示如下:“Adatbáziskezelés”。

我能做些什么才能让它发挥作用?

public string[] OpenFolder(string foldername)
        {
            byte[] bytes = Encoding.Default.GetBytes(foldername);
            foldername = Encoding.UTF8.GetString(bytes);
            string[] downloadFiles;
            StringBuilder result = new StringBuilder();
            FtpWebRequest reqFTP;
            try
            {
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(
                          "ftp://" + IP + "/"+foldername+"/"));
                reqFTP.UseBinary = true;
                reqFTP.Credentials = new NetworkCredential(username,
                                                           password);
                reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
                WebResponse response = reqFTP.GetResponse();
                StreamReader reader = new StreamReader(response
                                                .GetResponseStream());

                string line = reader.ReadLine();
                while (line != null)
                {
                    result.Append(line);
                    result.Append("\n");
                    line = reader.ReadLine();
                }
                result.Remove(result.ToString().LastIndexOf('\n'), 1);
                reader.Close();
                response.Close();
                return result.ToString().Split('\n');
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                downloadFiles = null;
                return downloadFiles;
            }
        }

1 个答案:

答案 0 :(得分:0)

if (line.Contains("#"))
{ 
     line = line.Replace("#", Uri.HexEscape('#'));
}

依此类推......