文档章节

使用Appache的FTPClient遇到的一些文件名乱码问题-总结(遇到了再续....)

康州牧码人
 康州牧码人
发布于 2015/04/28 17:56
字数 544
阅读 13
收藏 0
点赞 0
评论 0

1.       问题:在文件上传FTP的时候,文件名是乱码?

解释:

首先要明白两个编码,FTP协议的编码,FTP服务器的编码

FTP协议编码:指的是FTP传输协议所用的编码,用的是ISO-8859-1

FTP服务器编码:指的是所用的FTP服务器的编码(如,IIS :GBK

需要明确:源文件,传输协议,FTP服务器

一:我们的源文件是通过传输协议传输到FTP服务器的,所以,如果要让FTP服务器显示的名称应该要和源文件一样。所以两者的编码要一致!统一使用 GBK,因为FTP服务器的编码我们改不了

二:既然两者中间有一个FTP传输协议,协议的名称是ISO-8859-1,因此,我们必须把源文件转换成ISO-8859-1,才可以避免乱码,另外,FTP服务器的编码是GBK,所以,我们本地转码需要从GBK转换成ISO-8859-1

/** 本地字符编码 */

private static String LOCAL_CHARSET = "GBK";

// FTP协议里面,规定文件名编码为iso-8859-1

private static String SERVER_CHARSET = "ISO-8859-1";

String fileName = new String(file.getName().trim().getBytes(LOCAL_CHARSET), SERVER_CHARSET);

三:FTPClient 不应该设置任何编码,就是用默认的就好(默认是ISO-8859-1


2问题:Android 使用FTPClient下载FTp上面的问题件的时候,如何设置编码

一:一定要设置,FTPClient的编码是 GBK,不然无法得拿到真实的文件名

二:根据真实的文件名获取文件后,下载之前,要不这个真实的文件名转成ISO-8859-1然后才下载,以为FTP的传输协议就是ISO-8859-1,直接发GBKFTP不认,那肯定就找不到该文件啦

总结:一定要知道目标编码,传输编码,然后把源文件编码设置与目标编码一致,然后转换成传输编码格式以便传输

© 著作权归作者所有

共有 人打赏支持
康州牧码人
粉丝 6
博文 23
码字总数 10993
作品 0
深圳
程序员
求救,关于apache FTPClient 的乱码问题?

在使用Apache 的 org.apache.commons.net.ftp.FTPClient 的时候。 不管是 单个文件的上传 、删除、重命名等涉及到中文的问题,都没有乱码的出现。因为在操作FTP之前都给中文路径进行了转码“...

KuhnWei ⋅ 2017/11/08 ⋅ 1

用commons-net包写Ftp客户端下载(一)

由于需要客户需求,需要把Ftp上的所有文件下载到本地,包括目录和文件。看到文件数量的时候我就哭了。。 几万个文件,晕死。这个地方我遇到的几个困难我会一一说明。 下载commons-net包我就不...

猴子 ⋅ 2011/10/20 ⋅ 1

关于javaee上传ftp的某些问题

最近;项目需要上传归档文件到ftp服务器;我们的javaee项目服务器是IBM的uinx小型机;而FTP服务器是win8server版本的; jar包用的是apache的commons-net-3.3.jar; ftpClient.makeDirectory("路径...

老李99 ⋅ 2014/07/23 ⋅ 0

ftpsClient使用,慧字被屏蔽,请教大神

最近有用ftp做一个文件传输,用的是org.apache.commons.net.ftp.FTPClient/FTPSClient,其中FTPClient使用正常,但是使用ssl证书走FTPSClient时,每当碰到文件名带“慧”字的时候,就无法读取...

wzxc ⋅ 2017/05/04 ⋅ 0

java实现FTP多线程断点续传,上传下载!

package com.ftp; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintW......

狼狼A狗 ⋅ 2011/03/22 ⋅ 3

org.apache.commons.net.ftp包开发FTP客户端,实现断点续传,中文支持

利用org.apache.commons.net.ftp包实现一个简单的ftp客户端实用类。主要实现一下功能 1.支持上传下载。支持断点续传 2.支持进度汇报 3.支持对于中文目录及中文文件创建的支持。 具体请看代码...

御风林海 ⋅ 2013/11/29 ⋅ 0

ftp下载文件文件名乱码问题

package mine.backstage.cms.test; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.text.SimpleDateFormat......

美少女壮士喵 ⋅ 2017/11/15 ⋅ 0

FTPClient上传 中文目录、中文文件名乱码问题

问题描述: 使用org.apache.commons.net.ftp.FTPClient创建中文目录、上传中文文件名时,目录名及文件名中的中文显示为“??”。 原因: FTP协议里面,规定文件名编码为iso-8859-1,所以目录名...

答复哈 ⋅ 2012/10/23 ⋅ 1

分享JFinal中renderFile方法中文文件名乱码问题的解决办法

最近在一直在使用JFinal进行web项目的开发工作,使用起来感觉非常之方便效率,不愧是名为急速WEB开发框架,呵呵! 废话不说,进入正题。项目开发过程中经常遇到文件的上传于下载,JFinal中提...

htoman ⋅ 2013/02/01 ⋅ 3

《备份CSDN博客正文到本地存档》续

在《备份CSDN博客正文到本地存档》一文中,采用硬编码的方式备份了CSDN上的博文,效果还不错,只是很多人遇到了编码的问题,这个比较容易解决。所谓编码问题无非就两点,第一就是浏览器的编码...

晨曦之光 ⋅ 2012/04/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 40分钟前 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

MVC——统一报文格式的异常处理响应

在我们写controller层的时候,常常会有这样的困惑,如果需要返回一个数据是,可能为了统一回去构造一个类似下列的数据格式: { status:true, msg:"保存成功!", data:[]} 而且在写...

alexzhu592 ⋅ 昨天 ⋅ 0

[知乎]SSH框架

网上图书馆管理系统包括管理员管理和图书管理,图书借阅,查询模块等等,网上商城包括前台页面和后台管理页面,两个都是以前别人的实际项目,只是别人用的不是SSH,我把他们改用SSH了,除了S...

颖伙虫 ⋅ 昨天 ⋅ 0

android -------- 打开本地浏览器或指定浏览器加载,打电话,打开第三方app

开发中常常有打开本地浏览器加载url或者指定浏览器加载, 还有打开第三方app, 如 打开高德地图 百度地图等 在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器。 如果手机本身...

切切歆语 ⋅ 昨天 ⋅ 0

linux 安装docker

通过以下命令下载安装docker wget -qO- https://get.docker.com | sh 执行以上命令后输出以下内容说明安装成功,注意红框中的内容,docker安装成功后默认只有root能使用,红框中给出的提示是...

haoyuehong ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部