Tengo que subir un archivo a un servidor FTP. El nombre del archivo contiene letras especiales, digamos äöü
. En el servidor FTP, necesito que el nombre del archivo sea UTF-8 codificado.Codificación de nombre de archivo en Apache Commons Net FTPClient
Mi código es así:
import org.apache.commons.net.ftp.FTPClient;
FTPClient client = new FTPClient();
...
boolean retval = client.storeFile(fileName, inputStream);
El problema es que después de storeFile
, el nombre del archivo guardado en el servidor FTP es ISO-8859-1 codificada en lugar de UTF-8.
¿Cómo puedo decir que FTPClient
a UTF-8 codifiquen los nombres de los archivos?
Diría que está buscando en el lugar equivocado, esta es probablemente una configuración en el servidor FTP ... – Marcelo
No necesariamente. La especificación del protocolo FTP original no era compatible con Unicode en absoluto. Para utilizar UTF-8 a través de una conexión FTP, ambas partes tienen que aceptar primero su uso. El servidor debe informar en el comando 'FEAT' que incluso admite UTF-8 (consulte RFC 2640, aunque no todos los servidores admiten esa especificación). Algunos servidores requieren que los clientes envíen comandos no estándar 'OPTS UTF8 ON' u 'OPTS UTF-8 NLST' para activar UTF-8. Entonces esa es la pregunta de $ 1M: ¿qué soporte 'FTPClient', y qué soporte tiene el servidor? Usaría un detector de paquetes, como WareShark, para ver el tráfico FTP y ver. –