在 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()
如果您知道文件的名称应该是什么,您可以遍历列表并查看哪些编码产生了正确的文件名。
尝试:
StreamReader rsprdr = new StreamReader(rsp.GetResponseStream(), Encoding.GetEncodings(1251)) ;
您也可以尝试 "iso-8859-1" 而不是 1251
我的程序连接到 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()
如果您知道文件的名称应该是什么,您可以遍历列表并查看哪些编码产生了正确的文件名。
尝试:
StreamReader rsprdr = new StreamReader(rsp.GetResponseStream(), Encoding.GetEncodings(1251)) ;
您也可以尝试 "iso-8859-1" 而不是 1251