在 streamreader 中使用字符编码

Using Character Encoding with streamreader

我的程序连接到 ftp 服务器并列出特定文件夹 c:\ClientFiles 中的所有文件...我遇到的问题是文件名有一些有趣的字符,例如– 即 Billing–File.csv,但代码已删除,将这些字符替换为破折号“-”。当我尝试下载文件时找不到。

我已经尝试了 class 编码中的所有编码类型,但无法容纳这些字符。

请查看我列出文件的代码。

        UriBuilder ub;
        if (rootnode.Path != String.Empty) ub = new UriBuilder("ftp", rootnode.Server, rootnode.Port, rootnode.Path);
        else ub = new UriBuilder("ftp", rootnode.Server, rootnode.Port);
        String uristring = ub.Uri.OriginalString;
        req = (FtpWebRequest)FtpWebRequest.Create(ub.Uri);
        req.Credentials = ftpcred;
        req.UsePassive = pasv;
        req.Method = WebRequestMethods.Ftp.ListDirectoryDetails;            
        try
        {
            rsp = (FtpWebResponse)req.GetResponse();
            StreamReader rsprdr = new StreamReader(rsp.GetResponseStream(), Encoding.UTF8); //this is where the problem is.

非常感谢您的帮助或建议

并非每个编码在编码命名空间中都有 class。您可以使用以下命令获取系统中已知的所有编码列表:

 Encoding.GetEncodings()

(MSDN info for GetEncodings).

如果您知道文件的名称应该是什么,您可以遍历列表并查看哪些编码产生了正确的文件名。

尝试:

StreamReader rsprdr = new StreamReader(rsp.GetResponseStream(), Encoding.GetEncodings(1251)) ;

您也可以尝试 "iso-8859-1" 而不是 1251