解决,文件上传到 ftp 服务器,中文出现乱码问题

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

上传到 ftp 服务器,中文出现乱码解决,之前文件名  “ 网关信息 ” 始终不能正确显示,尝试了多种编码,最后GB2312 为可以用的编码,

效果:

 

  我遇到的 ftp 服务是设置编码为:GB2312 。注意要在 connect 之前就设置编码

  ftpClient.setControlEncoding("GB2312");

 

   /** 
    * 参数获取FTPClient对象 
    * @param ftpHost FTP主机服务器 
    * @param ftpPassword FTP 登录密码 
    * @param ftpUserName FTP登录用户名 
    * @param ftpPort FTP端口 默认为21 
    * @return 
    */  
   public static FTPClient getFTPClientByParam(String ftpHost, String ftpPassword,  
           String ftpUserName, int ftpPort) {  
	   
       FTPClient ftpClient = null;  
       try {  
           ftpClient = new FTPClient();  
           ftpClient.setControlEncoding("GB2312");
           ftpClient.connect(ftpHost, ftpPort);// 连接FTP服务器  
           ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器  
           if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {  
               logger.info("未连接到FTP,用户名或密码错误 !");  
               ftpClient.disconnect();  
           } else {  
               logger.info("FTP连接成功。");  
           }  
       } catch (SocketException e) {  
           e.printStackTrace();  
           logger.info("请检查FTP的IP地址 ! ");  
       } catch (IOException e) {  
           e.printStackTrace();  
           logger.info("请核对FTP的端口 ! ");  
       }  
       return ftpClient;  
   } 

 

 

 

您可以使用以下代码来生成CSV文件上传FTP服务器: ```java import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.StandardCharsets; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; public class CSVGenerator { public static void main(String[] args) { generateCSV(); } public static void generateCSV() { String csvFilePath = "path/to/csv/file.csv"; String ftpServer = "ftp.example.com"; int ftpPort = 21; String ftpUser = "username"; String ftpPassword = "password"; String ftpDirectory = "/path/to/ftp/directory/"; try (Writer writer = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(csvFilePath), StandardCharsets.UTF_8))) { // 写入CSV文件内容 writer.write("列1,列2,列3\n"); writer.write("数据1,数据2,数据3\n"); writer.write("数据4,数据5,数据6\n"); // 添加更多数据行... // 上传CSV文件FTP服务器 FTPClient ftpClient = new FTPClient(); ftpClient.connect(ftpServer, ftpPort); ftpClient.login(ftpUser, ftpPassword); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); ftpClient.changeWorkingDirectory(ftpDirectory); ftpClient.storeFile("file.csv", new FileInputStream(csvFilePath)); ftpClient.logout(); ftpClient.disconnect(); System.out.println("CSV文件已生成并成功上传FTP服务器!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 请注意,您需要先在项目中添加 Apache Commons Net 库的依赖,以便使用 `FTPClient` 类。您可以在 Maven 中添加以下依赖项: ```xml <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.7.2</version> </dependency> ``` 请将以下变量替换为您自己的值: - `csvFilePath`:CSV文件的本地路径和文件名。 - `ftpServer`:FTP服务器的地址。 - `ftpPort`:FTP服务器的端口号(默认为21)。 - `ftpUser`:FTP服务器的用户名。 - `ftpPassword`:FTP服务器的密码。 - `ftpDirectory`:要上传到的FTP服务器的目录路径。 这段代码生成一个包含示例数据的CSV文件,并将其上传到指定的FTP服务器。您可以根据自己的需求修改CSV文件的内容和上传的逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值