Ακόμα δεν έχεις δώσει τον κώδικα που χρησιμοποιείς για το upload. Χρησιμοποιείς τον WebClient? Το FtpWebRequest? Κάποια άλλη κλάση? Χωρίς τον κώδικα και την έκδοση του server είναι σχεδόν αδύνατο να σε βοηθήσει κανείς.
Η μορφή του string στη C# δεν έχει σημασία γιατί την μετατροπή την κάνει ο WebClient ή το FtpWebRequest κατά το negotiation. Αν αναναγκάζεσαι να κάνεις decode κάτι πηγαίνει στραβά, ή στον κώδικα σου ή στο server. Συνήθως μπορείς να δεις την έκδοση του server αν κάνεις ένα απλό ftp από το command line. Η έκδοση του server εμφανίζεται στο banner που σου γυρίζει ο server όταν μπεις.
Από τη στιγμή που θέλεις να χρησιμοποιήσεις τον κώδικα για commercial χρήση θα πρέπει να λύσεις οπωσδήποτε το πρόβλημα αντί να το κουκουλώσεις. Πρώτα θα πρέπει να ελέγξεις ότι ο server υποστηρίζει το σωστό RFC κοιτάζοντας την έκδοση του. Μετά θα πρέπει να δοκιμάσεις να ανεβάσεις ελληνικά αρχεία χρησιμοποιώντας κάποιο άλλο client, ή ακόμα και το command line. Το command line θα είναι πολύ χρήσιμο καθώς θα μπορέσεις να δώσεις τις εντολές FEAT και OPT για να δεις πως συμπεριφέρεται ο server.
Αν δεις ότι ο server δεν υποστηρίζει Unicode, χώστα στον hoster - είναι δική του δουλειά να παρέχει ένα συμβατό ftp server, ή βρες άλλο hoster.
Αν όμως δεις ότι το upload δουλεύει με διάφορους clients αλλά όχι με τον κώδικα σου, θα πρέπει να δεις τί συμβαίνει. Πρώτα, θα πρέπει να δοκιμάσεις να κάνεις ένα απλό
UploadFile για να βεβαιωθείς ότι το απλό upload δολεύει. Αν δεις κάτι περίεργο, θα πρέπει να βάλεις το
WireShark ή το
Fiddler για να δεις τα πακέτα που ανταλλάσονται μεταξύ του κώδικα σου και του server.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos