मुझे एक फ़ाइल को एक FTP सर्वर पर अपलोड करना होगा। फ़ाइल नाम में विशेष पत्र हैं, äöü
कहें। एफ़टीपी सर्वर पर, मुझे फ़ाइल नाम को यूटीएफ -8 एन्कोडेड होना चाहिए।अपाचे कॉमन्स में फ़ाइल नाम एन्कोडिंग नेट एफ़टीपी क्लाइंट
मेरे कोड इस तरह है:
import org.apache.commons.net.ftp.FTPClient;
FTPClient client = new FTPClient();
...
boolean retval = client.storeFile(fileName, inputStream);
समस्या यह है कि storeFile
के बाद, FTP सर्वर पर सहेजी गई फ़ाइल का नाम ISO-8859-1 UTF-8 के बजाय इनकोडिंग है।
मैं यूटीएफ -8 को FTPClient
फ़ाइल नामों को एन्कोड कैसे कर सकता हूं?
मैं कहूंगा कि आप गलत जगह पर देख रहे हैं, यह शायद FTP सर्वर में एक कॉन्फ़िगरेशन है ... – Marcelo
आवश्यक नहीं है। मूल एफ़टीपी प्रोटोकॉल spec यूनिकोड का समर्थन नहीं किया था। एक एफ़टीपी कनेक्शन पर यूटीएफ -8 का उपयोग करने के लिए, दोनों पार्टियों को पहले इसके उपयोग से सहमत होना है। सर्वर को 'FEAT' कमांड में रिपोर्ट करना है कि यह यूटीएफ -8 का भी समर्थन करता है (आरएफसी 2640 देखें, हालांकि सभी सर्वर उस स्पेक का समर्थन नहीं करते हैं)। कुछ सर्वरों को यूटीएफ -8 को सक्रिय करने के लिए ग्राहकों को गैर मानक 'ओपीटीएस यूटीएफ 8 चालू' या 'ओपीटीएस यूटीएफ -8 एनएलएसटी' कमांड भेजने की आवश्यकता होती है। तो यह $ 1 एम प्रश्न है - 'FTPClient' समर्थन क्या करता है, और सर्वर का समर्थन क्या करता है? मैं एफ़टीपी यातायात देखने और देखने के लिए, वेयरशर्क की तरह एक पैकेट स्निफर का उपयोग करूंगा। –