1. 程式人生 > >winscp上傳後,檔名亂碼的解決方法

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