解決windows中打包的zip在linux中解壓文件名亂碼的問題


zip壓縮包中的文件名編碼跟隨系統設定,但zip文件中不會記錄文件名編碼,在windows中打包zip,放到linux中解壓時,解壓程序並不會自動轉換文件名編碼,因此會出現文件名亂碼。解決這個問題的方法是讓解壓程序保留原始文件名,解壓完畢后再轉換編碼。

我使用7z作為解壓程序,因為7z對超過2GB的壓縮包有很好的支持,而tar、unzip等都不支持超過2GB的文件。安裝7z:

$ sudo apt-get install p7zip-full

然后設置系統編碼:

$ export LANG=C

解壓zip文件:

$ 7za x /path/to/zip

解壓之后在gui文件管理器中可能會看到文件名后面出現(invalid encoding)的后綴,不用管它,使用ls命令看到的文件名是沒有那個后綴的。

然后使用convmv轉換編碼。安裝convmv:

$ sudo apt-get install convmv

convmv支持的部分參數如下:

 -f  源編碼

 -f  目標編碼

 --notest  convmv默認只會顯示文件名轉換后的結果而不會實際進行轉換。使用這個參數使convmv對文件名進行實際的編碼轉換。

 --list  列出convmv支持的所有編碼

 -r  遞歸轉換所有子目錄的文件名編碼

轉換:

$ convmv -f cp936 -t utf8 --notest /path/to/file

cp936是gbk編碼在windows里的別稱。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM