我的程序连接到ftp服务器并列出特定文件夹中的所有文件c:\ ClientFiles ...我遇到的问题是文件名有一些有趣的字符,如“Billing” “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.
您的帮助或建议将受到高度赞赏
答案 0 :(得分:1)
并非每个编码在编码命名空间中都有一个类。您可以使用以下命令获取系统中已知的所有编码列表:
Encoding.GetEncodings()
如果你知道该文件的名称应该是什么,你可以遍历列表,看看哪些编码会产生正确的文件名。
答案 1 :(得分:1)
尝试:
StreamReader rsprdr = new StreamReader(rsp.GetResponseStream(), Encoding.GetEncodings(1251)) ;
您也可以尝试“iso-8859-1”而不是1251