c# - 无法使用 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();
谢谢你
解决方案
我认为您文件的编码不是 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);
推荐阅读
- ruby - Ruby Selenium Capybara 不会超时
- reactjs - Enzyme 期望配置一个适配器
- python - Pandas groupby 聚合传递组名来聚合
- javascript - 如果另一个值被清除,如何删除某个值?| AngularJs
- java - 在 Swing 中设置标签文本会撤消所有按钮位置移动
- vba - VBA 代码仅清除目标工作表上的常量
- javascript - 我如何处理在 redux saga 中调用不同函数的多个动作?
- c# - 如何访问某个按钮以更改某个文本字段的值(在动态创建的控件中)
- liquibase - Liquibase:删除重复行
- php - Lumen 中未找到特征“App\HasApiTokens”