【问题标题】:Using Character Encoding with streamreader将字符编码与流阅读器一起使用
【发布时间】:2015-07-10 10:51:47
【问题描述】:

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

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

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

        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.

我们将非常感谢您的帮助或建议

【问题讨论】:

    标签: c# character-encoding streamreader


    【解决方案1】:

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

     Encoding.GetEncodings()
    

    (MSDN info for GetEncodings).

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

    【讨论】:

      【解决方案2】:

      试试:

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

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

      【讨论】:

        猜你喜欢
        • 2015-09-19
        • 1970-01-01
        • 1970-01-01
        • 2014-07-11
        • 2015-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多