文档章节

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

康州牧码人
 康州牧码人
发布于 2015/04/28 17:56
字数 544
阅读 13
收藏 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
博文 24
码字总数 10993
作品 0
深圳
程序员
求救,关于apache FTPClient 的乱码问题?

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

KuhnWei
2017/11/08
21
1
ftpsClient使用,慧字被屏蔽,请教大神

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

wzxc
2017/05/04
74
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
0
3
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
2
0
org.apache.commons.net.ftp包开发FTP客户端,实现断点续传,中文支持

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

御风林海
2013/11/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0
SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
1
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部