2
FTP를 사용하여 웹 서버에 저장된 .txt 파일에 텍스트 줄을 추가하려고합니다. 텍스트를 연결하고 추가하지만 어떤 이유로 텍스트가 손상되어 임의의 문자 (기호, 중국어 등)로 표시됩니다.FtpWebRequest가 파일에 추가 된 텍스트를 손상시키는 이유는 무엇입니까?
다음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();
}
위의 방법은,을 반환 무엇 :이 코드를 사용하여 문자열로 다시 바이트 []에서 '데이터를'변환,
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();
디버그하려고 : 여기 내 코드입니다 MD5 해시 문자열은 예상대로 :
:E904B52B435BF0E1DA8D4CE6EC47E45A
이 FTP를 통해 내 파일에 추가 같은 '데이터'var에,로 결국 무엇인가
이string dataString = BytesToString(data);
bytes[] newBytes = Encoding.ASCII.GetBytes(dataString);
작동하지 않았다 : 나는 심지어이 시도했습니다
, 그냥 경우 인코딩 문제가 있었다. 아무도 내가 여기서 뭘 잘못하고 있는지 알아?
바이트 단위로 데이터 인코딩을 시도하십시오. https://blogs.msdn.microsoft.com/csharpfaq/2006/10/09/how-do-i-calculate-a-md5-hash-from-a-string/ – jackotonye
FTP 서버의 파일이 'ASCII'로 저장되어 있습니까? –
아스키 파일에는 '04'가 거의 포함될 수 없습니다. 파일에서 어떤 인코딩을 사용합니까? –