從Windows複製文件到Linux顯示亂碼問題

(1).文件名亂碼html

  這並非全部人都會碰到的問題,通常常見於使用putty的用戶。使用convmv命令能夠解決這個問題。linux

  我寫詳細一點還原真實場景,首先我來上傳一個測試文件「a此文件在windows下打開正常-到linux下vim打開亂碼.txt」。在確保putty能夠正常鏈接到Linux上,打開Windows上的命令提示符輸入pscp命令(pscp [Windows上的文件位置,能夠絕對路徑,能夠相對路徑] [以什麼用戶登陸Linux]@[Linux的IP地址]:[傳到Linux上什麼位置,絕對路徑])。vim

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下看看上傳後的文件windows

[xf@xuexi ~]$ ls
1                                                  secondDir  視頻  下載
a???ļ???windows?´???????-??linux??vim????????.txt  公共       圖片  音樂
mainDir                                            模板       文檔  桌面

  能夠看到有一個a開頭的亂碼文件名,看一下本身有沒有convmv命令,沒有就yum安裝一下,記住這時須要使用root用戶bash

[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查看。詳細瞭解能夠看   http://www.javashuo.com/article/p-pfwfwmcb-bm.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).文件內的亂碼spa

  轉換完文件名的亂碼其實並無結束,由於文件內容仍是亂碼插件

[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  公共  模板  視頻  圖片  文檔  下載  音樂  桌面
相關文章
相關標籤/搜索