首页 > 解决方案 > 无法使用 FTP 在文本文件中传递希伯来语

问题描述

我有一个将文本文件传递给 FTP 服务器的简单代码,文本文件是一个简单的文本“ANSI”,格式 - Windows-1255,里面有希伯来语。

当我将文件传递到 FTP 服务器并下载文件时,希伯来字符变成问号 (?),文件保持其格式(“ANSI”,格式 - Windows-1255)。

为什么我的希伯来语变成问号?(我正在使用.net4)

这是我的代码

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpAddress + fileName);

request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(userName, password);

StreamReader sourceStream = new StreamReader(filePath);

byte[] fileContents = Encoding.GetEncoding(1255).GetBytes(sourceStream.ReadToEnd());

using (Stream requestStream = request.GetRequestStream())
{
    requestStream.Write(fileContents, 0, fileContents.Length);
    requestStream.Close();
}

FtpWebResponse response = (FtpWebResponse)request.GetResponse();
response.Close();

谢谢你

标签: c#ftp.net-4.0hebrew

解决方案


我认为您文件的编码不是 1255。

尝试使用编码 UTF-8 打开文件并重新检查结果。

byte[] fileContents = Encoding.Default.GetBytes(sourceStream.ReadToEnd());

或者您可以使用中可用的上传WebClient方法,这样您甚至都不会触摸文件。

// Create a new WebClient instance.
WebClient myWebClient = new WebClient();
byte[] responseArray = myWebClient.UploadFile(ftpAddress + fileName, filePath);

推荐阅读