Tôi phải tải tệp lên máy chủ FTP. Tên tệp chứa các chữ cái đặc biệt, nói äöü
. Trên máy chủ FTP, tôi cần tên tệp được mã hóa UTF-8.Mã hóa tên tệp trong Apache Commons Net FTPClient
Mã của tôi là như thế này:
import org.apache.commons.net.ftp.FTPClient;
FTPClient client = new FTPClient();
...
boolean retval = client.storeFile(fileName, inputStream);
Vấn đề là sau khi storeFile
, tên của các tập tin được lưu trên máy chủ FTP là ISO-8859-1 mã hóa chứ không phải là UTF-8.
Làm cách nào tôi có thể yêu cầu FTPClient
để UTF-8 mã hóa tên tệp?
Tôi muốn nói rằng bạn đang tìm kiếm địa điểm sai, đây có thể là cấu hình trong máy chủ FTP ... – Marcelo
Không nhất thiết. Thông số giao thức FTP ban đầu không hỗ trợ Unicode. Để sử dụng UTF-8 qua kết nối FTP, cả hai bên phải đồng ý với việc sử dụng nó trước tiên. Máy chủ phải báo cáo trong lệnh 'FEAT' rằng nó thậm chí còn hỗ trợ UTF-8 (xem RFC 2640, mặc dù không phải tất cả các máy chủ đều hỗ trợ đặc tả đó). Một số máy chủ yêu cầu khách hàng gửi các lệnh 'OPTS UTF8 ON' hoặc' OPTS UTF-8 NLST' không chuẩn để kích hoạt UTF-8. Vì vậy, đó là câu hỏi $ 1 triệu - hỗ trợ 'FTPClient' và máy chủ hỗ trợ những gì? Tôi sẽ sử dụng một gói sniffer, như WareShark, để xem lưu lượng truy cập FTP và xem. –