winscp上传后,文件名乱码的解决方法

前言

以前不大会用winscp, 上传文件到debian服务器时,用的都是刚装好的winscp的默认设置。
以前也用其他上传工具传过目录到debian服务器。
后来要下载已经上传到服务器的文件时,发现文件名乱码。
文件名乱码分2种情况:

  • 用SecureCRT连上服务器后的控制台上,用’ls - l’命令列文件时乱码
  • 用winscp浏览服务器上的文件时,文件名乱码。
    出现上述情况的乱码,有可能是客户端软件没有设置utf-8字符集,也有可能是服务器的字符集没有设置成utf-8,可有可能是winscp上传文件时,没有设置文件名为utf-8.

实验

新环境设置

debian服务器的字符集设置

服务器字符集配置文件为/etc/locale.gen, 最后一行是服务器默认字符集编码
服务器默认字符集设置,一般就选一种,e.g. zh_CN.UTF-8 UTF-8

cat /etc/locale.gen
...
# zh_TW.EUC-TW EUC-TW
# zh_TW.UTF-8 UTF-8
# zu_ZA ISO-8859-1
# zu_ZA.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8

如果/etc/locale.gen最后一行不是zh_CN.UTF-8 UTF-8, 用 ‘dpkg-reconfigure locales’ 设置服务器的默认字符集为zh_CN.UTF-8 UTF-8, 可能要重新启动服务器才生效。

SecureCRT的字符集设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

winscp文件名为utf8编码设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

winscp编辑器的字符集设置

有可能用在winscp中直接修改服务器上的文件名称或直接编辑保存服务器上的文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如上设置后,新传的文件或目录,用控制台或winscp查看,下载,文件名都正常,不乱码。

如何让上传错乱码的目录或文件纠正为文件名不乱码

开始我在服务器自己改文件名,改了几个就知道,这样搞不行。乱码的文件名太多了。
解决方法:
将winscp文件名UTF-8编码改成自动(这样看到的文件名或目录就不是乱码),将服务器上的乱码文件或目录下传到本地。
删除服务器上文件名乱码的目录。
将winscp文件名UTF-8编码改成开启,将下传到本地的目录再上传到服务器。
这时,再用winscp看上传好的目录,或用SecureCRT看服务器端的目录,文件名就正常了。

正常的上传设置:
将winscp文件名UTF-8编码改成开启,本地的目录再上传到服务器。

下载之前,先看本地硬盘空间是否足够

进入要查看size的目录
du -sh
这样知道了要下载的目录size是多少, 如果本地空间够,就可以下载下来。

如何将已经上传,文件名已经乱码的目录改名为utf8

刚开始用的下传再上传的方法真土,其他同学都在用convmv

用convmv对乱码的文件名转码,速度真快。做了实验如下
https://blog.csdn.net/LostSpeed/article/details/85222966

猜你喜欢

转载自blog.csdn.net/LostSpeed/article/details/85221891