文件名含中文,上传到FTP文件服务器文件名乱码 linux

本文详细解析了在Windows客户端与Linux FTP服务器间传输中文文件时出现乱码的原因,并提供了两种解决方案:一是调整Xshell编码配置;二是修改Linux系统编码至GBK,确保与Windows统一。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境说明:

操作系统:Windows
ftp服务器:Linux
Java中: org.apache.commons.net.ftp.FTPClient;
依赖
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.6</version>
        </dependency>

乱码表现:

浏览器直接登陆ftp,中文显示正常
Windows下cmd命令窗口连接ftp,中文显示正常
xshell连接ftp,中文乱码,比如显示成问号啥的
分析:1、2都处在Windows下,3处在linux下

乱码原因:

Windows默认GBK编码,linux默认UTF-8,所以在Windows下上传的中文到Linux就会显示为乱码。如果我们把Linux的默认编码改为GBK,就不会出现乱码啦!哈哈哈^_^

方式一:

修改xshell的编码方式:地球图标–Chinese Simplified (GBK)


看看中文名称有没有正常,如果没有,你就需要看看方式二了

方式二:

使用locale命令查看linux编码方式:

[root@i-e6e1992e ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

很明显,就是UTF-8啦,下面就要改成跟Windows一样的GBK编码,
命令行键入:vi /etc/profile 即:编辑profile文件
然后在profile文件里面加上如下两行代码:
(键盘键入a/i进入编辑模式)

export LC_ALL="zh_CN.GBK"
export LANG="zh_CN.GBK"

Esc键退出编辑模式,:wq再Enter一下就是保存并退出啦!哈哈,接下来要使这个设置生效我们还需要进行下一步:

命令行键入:[root@i-e6e1992e etc]# source /etc/profile

完事再locale一下看看,是不是就变成下面这样啦^_^

[root@i-e6e1992e Class]# locale
LANG=zh_CN.GBK
LC_CTYPE="zh_CN.GBK"
LC_NUMERIC="zh_CN.GBK"
LC_TIME="zh_CN.GBK"
LC_COLLATE="zh_CN.GBK"
LC_MONETARY="zh_CN.GBK"
LC_MESSAGES="zh_CN.GBK"
LC_PAPER="zh_CN.GBK"
LC_NAME="zh_CN.GBK"
LC_ADDRESS="zh_CN.GBK"
LC_TELEPHONE="zh_CN.GBK"
LC_MEASUREMENT="zh_CN.GBK"
LC_IDENTIFICATION="zh_CN.GBK"
LC_ALL=zh_CN.GBK
---------------------

3.直接通过命令改,但是每次上传都需要改比较麻烦:

linux下中文文件名显示乱码问题
SYNOPSIS:        convmv -f 源编码 -t 新编码 [options] FILES ... DIRECTORYS
最后的命令:
convmv -f gbk -t utf-8 -r --notest /home/wwwroot(文件的目录)


作者:SThranduil
来源:优快云
原文:https://blog.youkuaiyun.com/SThranduil/article/details/77838481
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值