首頁  >  文章  >  運維  >  linux下zip檔解壓縮出現亂碼怎麼辦?

linux下zip檔解壓縮出現亂碼怎麼辦?

Y2J
Y2J原創
2017-05-24 14:16:062554瀏覽

本篇文章主要介紹了解決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

4. MySQL中新增使用者權限的實例詳解

5. Linux如何偵測伺服器網路狀況

以上是linux下zip檔解壓縮出現亂碼怎麼辦?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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