当前位置:编程学习 > C#/ASP.NET >>

C#遍历FTP的中文名文件出现乱码

各位 在下遇到一个问题,就是遍历FileZilla Server上的文件名出现了乱码 大家是否也遇到这样的问题呢? --------------------编程问答-------------------- 编码问题,读取时设置成UTF-8或者GB2312 --------------------编程问答-------------------- 嗯  主要就是ls说的问题  
读取的时候 指定下编码类别 --------------------编程问答-------------------- 文件名是这样:
鐝犳捣甯傚痉鑳滃弽鍏夋潗鏂欐湁闄愬叕鍙?jpg

楼上的帮忙一下 把它变成中文名就可以了 写详细一点 我就把分给你了 --------------------编程问答-------------------- 我也知道是编码的问题 可是具体如何做啊 --------------------编程问答--------------------
引用 3 楼 tiger207 的回复:
文件名是这样:
鐝犳捣甯傚痉鑳滃弽鍏夋潗鏂欐湁闄愬叕鍙?jpg

楼上的帮忙一下 把它变成中文名就可以了 写详细一点 我就把分给你了

你遍历文件夹时定义了一个StreamReader吧,改成
 StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);//中文文件名 --------------------编程问答--------------------
引用 5 楼 chinajiyong 的回复:
引用 3 楼 tiger207 的回复:

文件名是这样:
鐝犳捣甯傚痉鑳滃弽鍏夋潗鏂欐湁闄愬叕鍙?jpg

楼上的帮忙一下 把它变成中文名就可以了 写详细一点 我就把分给你了

你遍历文件夹时定义了一个StreamReader吧,改成
 StreamReader reader = new StreamReader(response.GetResponseStream(), Sys……




 我是想批量下载一个路径下的所有文件

           FtpClient fc = new FtpClient("127.0.0.1","Server1","123");        
            List<string> list = new List<string>();       
            list = fc.GetFileList("seller001");//seller001是ftp上的一个目录 GetFileList
            //获得目录下的所有文件名
            foreach (string str in list)
            {
                 fc.Download("\\seller001\\"+str,"e:\\"+str); //下载到e盘
            }

用您的方法怎么做 在下是小白  --------------------编程问答--------------------
引用 6 楼 tiger207 的回复:
引用 5 楼 chinajiyong 的回复:
引用 3 楼 tiger207 的回复:

文件名是这样:
鐝犳捣甯傚痉鑳滃弽鍏夋潗鏂欐湁闄愬叕鍙?jpg

楼上的帮忙一下 把它变成中文名就可以了 写详细一点 我就把分给你了

你遍历文件夹时定义了一个StreamReader吧,改成
StreamReader reader = new StreamReader(response……

在方法GetFileList进去找 --------------------编程问答-------------------- 可是我用的是winfrom啊 大大 --------------------编程问答--------------------
引用 8 楼 tiger207 的回复:
可是我用的是winfrom啊 大大

你把你GetFileList函数贴上来 --------------------编程问答-------------------- 为什么有的ftp
StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
这样不乱码,但有的反而是不加System.Text.Encoding.UTF8,
StreamReader reader = new StreamReader(response.GetResponseStream());
才不乱码呢?
没有兼容的方法吗?! --------------------编程问答-------------------- 为什么有的ftp 
StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
这样就不乱码了,但有的反而是不加System.Text.Encoding.UTF8,
StreamReader reader = new StreamReader(response.GetResponseStream());
这样才不乱码呢?!
请问没有兼容的方法吗? --------------------编程问答-------------------- 估计没有其他办法,把文件改为字母吧。我弄过这个,基本没办法搞,连微软的FTP代码好像都是这个样子。 --------------------编程问答-------------------- StreamReader reader = new StreamReader(response.GetResponseStream(),System.Text.Encoding.Default);
如果这个不行,就一个一个试吧
--------------------编程问答-------------------- 我和楼主相同的问题
 /// <summary> 
        /// 获取当前目录下明细(包含文件和文件夹) 
        /// </summary> 
        /// <returns></returns> 
        public string[] GetFilesDetailList()
        {
            string[] downloadFiles;
            try
            {
                StringBuilder result = new StringBuilder();
                FtpWebRequest ftp;
                ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
                ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
                WebResponse response = ftp.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);

                //while (reader.Read() > 0) 
                //{ 

                //} 
                string line = reader.ReadLine();
                //line = reader.ReadLine(); 
                //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)
            {
                downloadFiles = null;
                Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFilesDetailList Error --> " + ex.Message);
                return downloadFiles;
            }
        }
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,