环境说明:

操作系统: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
来源:CSDN
原文:https://blog.csdn.net/SThranduil/article/details/77838481
版权声明:本文为博主原创文章,转载请附上博文链接!

Logo

更多推荐