FTP 文件上传 - 文件名编码错误

FTP File Upload - Filename Encoding Error

我正在使用 apache 的 commons-net 3.5 将文件上传到远程 FTP 服务器,并在打开连接之前将连接编码设置为 UTF-8,如下所示。

ftpClient.setAutodetectUTF8(true);
ftpClient.setControlEncoding("UTF-8");

这是发送文件的部分

private void uploadFile(byte[] data, String path, String fileName, FTPClient ftpClient) throws IOException {
    ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
    ftpClient.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);
    boolean uploadSuccess = ftpClient.storeUniqueFile(fileName, new  ByteArrayInputStream(data));

问题来了;发送名称包含土耳其语字符的文件时,结果文件命名不正确。喜欢,

Kimlikş.pdf -> KimlikÅ.pdf

但如果我使用 ftp4j,一切正常。以前有人有过这个吗?数据不正确地从我这边发送。我使用 Microsoft Network Monitor 监控流量。这是原始请求:

FTP FTP:Request from Port 62642,'STOR KimlikÅ.pdf'  {TCP:5879, IPv4:134}

我猜是apache的commons-net出了问题,所以我迁移到ftp4j,问题就没有了。

<dependency>
    <groupId>it.sauronsoftware</groupId>
    <artifactId>ftp4j</artifactId>
    <version>1.6</version>
</dependency>

尝试使用 WinSCP - 它运行得非常棒。

https://winscp.net/eng/download.php

没有 FileZilla,没有 TotalCommander - 只有 WinSCP。

  • 然后再次复制(例如,我有大约 6k 个文件,只有 50 个带有西里尔文)仅在问题提示“全部否”时给出,WinSCP 仅复制剩余文件。太棒了!

5 星给免费软件!