(1).文件名亂碼
這並不是所有人都會碰到的問題,一般常見於使用putty的用戶。使用convmv命令可以解決這個問題。
我寫詳細一點還原真實場景,首先我來上傳一個測試文件“a此文件在windows下打開正常-到linux下vim打開亂碼.txt”。在確保putty可以正常連接到Linux上,打開Windows上的命令提示符輸入pscp命令(pscp [Windows上的文件位置,可以絕對路徑,可以相對路徑] [以什么用戶登錄Linux]@[Linux的IP地址]:[傳到Linux上什么位置,絕對路徑])。
C:\Users\xuefei>pscp c:\Users\xuefei\Desktop\a此文件在windows下打開正常-到linux 下vim打開亂碼.txt xf@192.168.0.10:/home/xf/ xf@192.168.0.10's password: a此文件在windows下打開正?| 0 kB | 0.1 kB/s | ETA: 00:00:00 | 100%
這就上傳好,下面我們來Linux下看看上傳后的文件
[xf@xuexi ~]$ ls 1 secondDir 視頻 下載 a???ļ???windows?´???????-??linux??vim????????.txt 公共 圖片 音樂 mainDir 模板 文檔 桌面
可以看到有一個a開頭的亂碼文件名,看一下自己有沒有convmv命令,沒有就yum安裝一下,記住這時需要使用root用戶
[root@xuexi ~]# yum install convmv 已加載插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.cn99.com * extras: mirrors.aliyun.com * updates: mirrors.cn99.com CentOS7 | 3.6 kB 00:00
安裝完convmv命令,可以--help一下看看如何使用。這里會使用到-f選項(源文件編碼格式),-t(想要的格式),--notest選項(文件重新命名)。如果是目錄還需要-r選項(遍歷目錄)
[root@xuexi ~]# convmv -f gbk -t utf8 --notest /home/xf/a���ļ���windows�´�������-��linux��vim��������.txt mv "/home/xf/a���ļ���windows�´�������-��linux��vim��������.txt" "/home/xf/a此文件在windows下打開正常-到linux下vim打開亂碼.txt" Ready! [root@xuexi ~]# ls /home/xf/ 1 secondDir 視頻 下載 a此文件在windows下打開正常-到linux下vim打開亂碼.txt 公共 圖片 音樂 mainDir 模板 文檔 桌面
看,這就完成了。
注意:Windows編碼是gb2312,我的Linux編碼是UTF-8。想要看自己的編碼可以使用locale查看。詳細了解可以看 https://www.cnblogs.com/diantong/p/10200145.html
[xf@xuexi ~]$ locale LANG=zh_CN.UTF-8 LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MONETARY="zh_CN.UTF-8" LC_MESSAGES="zh_CN.UTF-8" LC_PAPER="zh_CN.UTF-8" LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" LC_TELEPHONE="zh_CN.UTF-8" LC_MEASUREMENT="zh_CN.UTF-8" LC_IDENTIFICATION="zh_CN.UTF-8" LC_ALL=
(2).文件內的亂碼
轉換完文件名的亂碼其實並沒有結束,因為文件內容還是亂碼
[xf@xuexi ~]$ cat a此文件在windows下打開正常-到linux下vim打開亂碼.txt #!/bin/bash echo 'ѧϰ' echo 'ѧϰ' echo 'ѧϰ' echo 'ѧϰ'
這時需要用到iconv命令,沒有yum安裝一下。這里會用到-f選項(源文件格式),-t選項(想要的格式),-o選項(輸出文件)
[xf@xuexi ~]$ iconv -f gbk -t utf8 a此文件在windows下打開正常-到linux下vim打開亂碼.txt -o a此文件在windows下打開正常-到linux下vim打開亂碼.txt //我這里將編譯后的文件輸出到源文件 [xf@xuexi ~]$ cat a此文件在windows下打開正常-到linux下vim打開亂碼.txt #!/bin/bash echo '學習' echo '學習' echo '學習' echo '學習'
(3).擴展
如果你對文件名沒有要求,或文件名輸入並不復雜,可以將直接使用iconv命令重新給一個新的文件名
[xf@xuexi ~]$ ls 1 secondDir 視頻 下載 a???ļ???windows?´???????-??linux??vim????????.txt 公共 圖片 音樂 mainDir 模板 文檔 桌面 [xf@xuexi ~]$ iconv -f gbk -t utf8 a���ļ���windows�´�������-��linux��vim��������.txt -o a.txt [xf@xuexi ~]$ ls 1 mainDir 模板 文檔 桌面 a???ļ???windows?´???????-??linux??vim????????.txt secondDir 視頻 下載 a.txt 公共 圖片 音樂 [xf@xuexi ~]$ cat a.txt #!/bin/bash echo '學習' echo '學習' echo '學習' [xf@xuexi ~]$ rm a???ļ???windows?´???????-??linux??vim????????.txt [xf@xuexi ~]$ ls 1 a.txt mainDir secondDir 公共 模板 視頻 圖片 文檔 下載 音樂 桌面