I am trying to create a file to an ftp server with the following code (where I also tried with UseBinary option true and false)
string username = "name";
string password = "password";
string remotefolder = "ftp://ftp.myhost.gr/public_html/test/";
string remoteFileName = "δοκιμαστικ? αρχε?οü?-?Copy.txt";
string localFile = @"C:estδοκιμαστικ? αρχε?ο - Copy.txt";
String ftpname = "ftp://ftp.myhost.gr/public_html/test" + @"/" + Uri.EscapeUriString(Program.remoteFileName);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpname);
request.Proxy = null;
request.Credentials = new NetworkCredential(username, password);
request.UsePassive = true;
request.KeepAlive = true;
request.Method = WebRequestMethods.Ftp.UploadFile;
request.UseBinary = true;
//request.UseBinary = false;
byte[] content = System.IO.File.ReadAllBytes(localFile);
byte[] fileContents = new Byte[content.Length];
Array.Copy(content, 0, fileContents, 0, content.Length);
using (Stream uploadStream = request.GetRequestStream())
{
int contentLength = fileContents.Length;
uploadStream.Write(fileContents, 0, contentLength);
}
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Console.WriteLine(response.ExitMessage);
The problem is that file at my ftp server does not get the name
I request which contains English, greek and german characters --> "δοκιμαστικ? αρχε?οü?-?Copy.txt
1) What can I do with that?
There is some improvement once I change my regional settings--> Current language for non-Unicode programs to Greek Language but I still miss the german chars.
2) Why does a c# program depend on this setting? Is there a special methodology i should follow in order to avoid dependency from this setting?
Encoding nightmares arose again :(
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…