首頁  >  文章  >  運維  >  linux下zip檔解壓縮亂碼問題的解決方法分享

linux下zip檔解壓縮亂碼問題的解決方法分享

黄舟
黄舟原創
2017-06-02 10:25:192889瀏覽

本篇文章主要介紹了解決linuxzip文件解壓亂碼問題,具有一定的參考價值,有興趣的小夥伴們可以參考一下。

原因

由於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。

以上是linux下zip檔解壓縮亂碼問題的解決方法分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn