次のコードを使用して、ftp サーバーにファイルを作成しようとしています (ここでは、UseBinary オプション true と false も試しました)。
string username = "name";
string password = "password";
string remotefolder = "ftp://ftp.myhost.gr/public_html/test/";
string remoteFileName = "δοκιμαστικό αρχείοüß-äCopy.txt";
string localFile = @"C:\test\δοκιμαστικό αρχείο - 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);
問題は、ftp サーバーのファイルが、英語、ギリシャ語、ドイツ語の文字を含む要求した名前を取得しないことです --> "δοκιμαστικό αρχείοüß-äCopy.txt
1) 私はそれで何ができますか?
地域の設定を変更すると、いくつかの改善があります->非Unicodeプログラムの現在の言語をギリシャ語に変更しますが、それでもドイツ語の文字が恋しいです。
2) ac# プログラムがこの設定に依存するのはなぜですか? この設定からの依存を避けるために従うべき特別な方法論はありますか?
エンコーディングの悪夢が再び発生しました:(