当前位置 博文首页 > ftpclient怎么读取文件,用Java开发FTP下载功能

    ftpclient怎么读取文件,用Java开发FTP下载功能

    作者:kuangmeixiang 时间:2021-07-09 14:33

      最近在用Java开发FTP下载功能,以往因为下载的不是直接的文件夹和中文文件,没有出现乱码的现象。近来由于要下载的文件没有压缩,造成下载后出现了中文乱码(中文文件夹或者中文文件名字)。那么怎么办呢?
      FTP中文乱码终极解决方案
      1.第一次尝试
      当出现乱码时,首先想到的就是编码不匹配,于是通过百度搜索检查到是有两个地方需要设置,设置完成后在自己架设的服务器上已经解决了乱码问题。
      String localCharset="GBK";
      ftp.setControlEncoding(localCharset);
      ftp.changeWorkingDirectory(new String(remotePath.getBytes(localCharset),"ISO-8859-1"));
      2.第二次尝试
      当把代码部署到服务器上时,由于FTP服务器是由第三方提供的,当下载完成后,又出现了中文乱码的问题,这时又进行了一番百度,发现FTP服务器存在UTF-8编码的可能。于是需要开启服务器对UTF-8的支持,如果服务器支持就用UTF-8编码,否则就使用本地编码(GBK)。
      String localCharset="GBK";
      if (FTPReply.isPositiveCompletion(ftp.sendCommand("OPTS UTF8", "ON"))) {
      localCharset = "UTF-8";
      }
      结语
      经过以上两步折腾,终于解决了在Java下通过Ftp下载带中文的文件夹或文件时出现的乱码问题。