Devo caricare un file su un server FTP. Il nome file contiene lettere speciali, ad esempio äöü
. Sul server FTP, ho bisogno che il nome del file sia codificato in UTF-8.Codifica del nome file in Apache Commons Net FTPClient
Il mio codice è simile a questo:
import org.apache.commons.net.ftp.FTPClient;
FTPClient client = new FTPClient();
...
boolean retval = client.storeFile(fileName, inputStream);
Il problema è che dopo storeFile
, il nome del file salvato sul server FTP è ISO-8859-1 codifica piuttosto che UTF-8.
Come posso dire a FTPClient
in UTF-8 codificare i nomi dei file?
Direi che stai cercando nel posto sbagliato, questa è probabilmente una configurazione nel server FTP ... – Marcelo
Non necessariamente. Le specifiche del protocollo FTP originale non supportavano affatto Unicode. Per utilizzare UTF-8 su una connessione FTP, entrambe le parti devono prima accettarne l'uso. Il server deve riportare nel comando "FEAT" che supporta anche UTF-8 (vedere RFC 2640, sebbene non tutti i server supportino tale specifica). Alcuni server richiedono ai client di inviare comandi "OPTS UTF8 ON" o "OPTS UTF-8 NLST" non standard per attivare UTF-8. Quindi questa è la domanda $ 1M - che cosa supporta il 'FTPClient', e cosa supporta il server? Userei uno sniffer di pacchetti, come WareShark, per guardare il traffico FTP e vedere. –