本篇文章主要介紹了解決linux下zip檔案解壓縮亂碼問題,具有一定的參考價值,有興趣的小夥伴們可以參考一下。
原因
由於zip格式並沒有指定編碼格式,Windows下產生的zip檔中的編碼是GBK/GB2312等,因此,導致這些zip檔在Linux下解壓縮時出現亂碼問題,因為Linux下的預設編碼是UTF8。
解決方案一
使用7z解壓縮。
安裝p7zip與convmv
# fedora $ su -c 'yum install p7zip convmv' # ubuntu $ sudo apt-get install p7zip convmv
執行指令解壓縮
# 使用7z解压缩 $ LANG=C 7za x your-zip-file.zip # 递归转码 $ convmv -f GBK -t utf8 --notest -r .
解決方案二
在windows上壓縮的文件,是用系統預設編碼中文來壓縮檔案。由於zip檔中沒有聲明其編碼,所以linux上的unzip一般以預設編碼解壓縮,中文檔名會出現亂碼。
雖然2005年就有人把這報告為bug, 但是info-zip的官方網站沒有把自動識別編碼列入計劃,可能他們不認為這是個問題。 Sun對java中存在N年的zip編碼問題,採用了同樣的處理方式。
有2種方式解決問題:
1. 透過unzip行指令解壓縮,指定字元集
unzip -O CP936 xxx.zip (用GBK, GB18030也可以)
有趣的是unzip的manual中並無這個選項的說明, unzip --help對這個參數有一行簡單的說明。
2. 在環境變數中,指定unzip參數,總是以指定的字元集顯示和解壓縮檔案
/etc/environment中加入2行
UNZIP="-O CP936" ZIPINFO="-O CP936"
這樣Gnome桌面的歸檔檔案管理器(file-roller)可以正常使用unzip解壓縮中文,但是file-roller本身並不能設定編碼傳遞給unzip。
【相關推薦】
1. Mysql免費影片教學
#2. 詳解innodb_index_stats匯入資料時 提示表主鍵衝突的錯誤
3. 實例詳解 mysql中innodb_autoinc_lock_mode
以上是linux下zip檔解壓縮出現亂碼怎麼辦?的詳細內容。更多資訊請關注PHP中文網其他相關文章!