问题描述
- ftp上传下载,ftp服务器在windows系统下,web服务器在linux系统下
-
哪位大神知道:
ftp服务器在搭建windows系统下,web服务器在部署linux系统下,现java中使用ftpclient实现上传下载时,下载的文件内容是乱码;
之前web服务器也部署在windows系统下正常的,后来迁移到linux系统下出现乱码了啊,中文文件名编码正常。
查ftpclient的源码发现读取ftp服务器上文件的编码格式固定了,无法在外部修改,有试着将读取出来的文件转码各种编码方式,仍然不行。
解决方案
ftpclient在传输的时候,设置模式为二进制而非文本。
解决方案二:
设置模式的问题,ftp分为两种一种是二进制,一种是文本,你估计是选择了文本,选择二进制就可以了
解决方案三:
ftp服务和web服务同时在windows系统上时,上传下载用的编码格式相同,上传下载正常;
现在两个服务分属于不同的系统,编码格式不同的话,上传文件可能会导致乱码:
通常windows的编码格式是GBK。但linux可能是gbk也可能是utf-8.可以用 echo $LANG.
方法1:你可以尝试修改两个系统的编码格式;
方法2:也可以读取文件,转码成为支持windows系统的编码;
两种方式 可以尝试下。
时间: 2025-01-02 13:40:52