ファイルをFTPサーバーにアップロードする必要があります。ファイル名には特殊文字、たとえばäöü
が含まれています。 FTPサーバーでは、ファイル名をUTF-8でエンコードする必要があります。Apache Commons Net FTPClientのファイル名のエンコーディング
私のコードは次のようである:
import org.apache.commons.net.ftp.FTPClient;
FTPClient client = new FTPClient();
...
boolean retval = client.storeFile(fileName, inputStream);
問題がstoreFile
後、FTPサーバーに保存されたファイルの名前がUTF-8ではなく、エンコードされたISO-8859-1であるということです。
FTPClient
にUTF-8にファイル名をエンコードする方法を教えてください。
あなたが間違った場所を探していると思いますが、これはおそらくFTPサーバーの設定です。 – Marcelo
必ずしもそうではありません。オリジナルのFTPプロトコル仕様は、Unicodeをまったくサポートしていませんでした。 FTP接続でUTF-8を使用するには、両方の当事者が最初にその使用に同意する必要があります。サーバは、FEATコマンドでUTF-8をサポートしていることを報告しなければなりません(RFC 2640を参照してください。一部のサーバーでは、クライアントがUTF-8を有効にするために非標準の 'OPTS UTF8 ON'または' OPTS UTF-8 NLST'コマンドを送信する必要があります。つまり、$ 1Mの質問です。「FTPClient」は何をサポートしていますか?また、サーバは何をサポートしていますか? WareSharkのようなパケットスニッファを使用してFTPトラフィックを監視してみます。 –