gpt4 book ai didi

c# - 为什么 FtpWebRequest 会损坏附加到文件的文本?

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:40 27 4
gpt4 key购买 nike

我正在尝试使用 FTP 将文本行添加到存储在网络服务器上的 .txt 文件中。它正在连接和附加文本,但由于某种原因它已损坏并显示为随机字符(符号、中文等)。这是我的代码:

byte[] data = md5Encryptor.ComputeHash(Encoding.ASCII.GetBytes(dataString));

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpAddress + "file.txt");
request.Method = WebRequestMethods.Ftp.AppendFile;
request.ContentLength = data.Length;
request.Credentials = ftpCredentials;

Stream requestStream = request.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();

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

为了尝试调试,我使用以下代码将“数据”从 byte[] 转换回字符串:

public static string BytesToString(byte[] data)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sb.Append(data[i].ToString("X2"));
}

return sb.ToString();
}

上面的方法返回的是预期的 md5 哈希字符串:

E904B52B435BF0E1DA8D4CE6EC47E45A

这就是通过 FTP 附加到我的文件中的相同“数据”变量,结果如下:

ө⮵孃跚䟬嫤

我什至试过这个,以防出现编码问题:

string dataString = BytesToString(data);
bytes[] newBytes = Encoding.ASCII.GetBytes(dataString);

没用。有人知道我在这里做错了什么吗?

最佳答案

原来 .txt 被编码为 Unicode 而不是 ASCII。维基百科说 ASCII 是默认的,但如果你打开“另存为”菜单,你可以检查。一旦我使用 Encoding.Unicode 保存,它就可以正常工作。

关于c# - 为什么 FtpWebRequest 会损坏附加到文件的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46859319/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com