当前位置: 移动技术网 > IT编程>开发语言>Java > Java中FTPClient上传中文目录、中文文件名乱码问题解决方法

Java中FTPClient上传中文目录、中文文件名乱码问题解决方法

2019年07月22日  | 移动技术网IT编程  | 我要评论

非常了得 刘阳,taohui.org,电取暖器

问题描述:

  使用org.apache.commons.net.ftp.ftpclient创建中文目录、上传中文文件名时,目录名及文件名中的中文显示为“??”。

原因:

  ftp协议里面,规定文件名编码为iso-8859-1,所以目录名或文件名需要转码。

解决方案:

1.将中文的目录或文件名转为iso-8859-1编码的字符。参考代码:

复制代码 代码如下:

   string name="目录名或文件名";

   name=new string(name.getbytes("gbk"),"iso-8859-1");// 转换后的目录名或文件名。


2.设置linux环境变量
复制代码 代码如下:

export lc_all="zh_cn.gbk"
export lang="zh_cn.gbk"

实例:
复制代码 代码如下:

    public boolean uploadfile(file file, string path, string filename) throws ioexception {
        boolean result = false;
        ftpclient ftpclient = new ftpclient();
        try {
            ftpclient.connect(confservice.getconfvalue(portalconfcontants.ftp_client_host));
            ftpclient.login(confservice.getconfvalue(portalconfcontants.ftp_client_username), confservice
                    .getconfvalue(portalconfcontants.ftp_client_password));
            ftpclient.setfiletype(ftpclient.binary_file_type);

            // make directory
            if (path != null && !"".equals(path.trim())) {
                string[] pathes = path.split("/");
                for (string onepath : pathes) {
                    if (onepath == null || "".equals(onepath.trim())) {
                        continue;
                    }

                    onepath=new string(onepath.getbytes("gbk"),"iso-8859-1");                   
                    if (!ftpclient.changeworkingdirectory(onepath)) {
                        ftpclient.makedirectory(onepath);
                        ftpclient.changeworkingdirectory(onepath);
                    }
                }
            }

            result = ftpclient.storefile(new string(filename.getbytes("gbk"),"iso-8859-1"), new fileinputstream(file));
        } catch (exception e) {
            e.printstacktrace();
        } finally {
            ftpclient.logout();
        }
        return result;
    }

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网