文档章节

使用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
深圳
程序员
私信 提问
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
linux 下中文文件乱码问题解决

经常遇到:windows下通过xftp上传到linux服务器中的中文名文件出现乱码的情况。 业务场景:有一个公共的下载目录,里面可能会有中文名的文件,在web端显示的时候出现乱码,导致下载出错的问题...

哥本哈根的小哥
11/16
0
0
《备份CSDN博客正文到本地存档》续

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

晨曦之光
2012/04/10
75
0

没有更多内容

加载失败,请刷新页面

加载更多

oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
4
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
4
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部