The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

在 Mac 電腦壓縮的 ZIP 檔案如何正確在 Windows 下解壓縮

我們公司合作的網頁設計師使用的 Mac 電腦不是 MBP (MacBook Pro) 就是 MBA (MacBook Air),有些已經很習慣用 Dropbox 交換檔案,不過還是有些設計師並沒有在用,而會直接透過壓縮檔的方式當成附件寄出,在 Mac 電腦裡內建的壓縮格式為十分常見的 ZIP 檔案格式,但是有個問題卻一直困擾著我,那就是他們在 Mac 電腦上壓縮過的 ZIP 檔案跟 Windows 常見的壓縮編碼不相容,如果壓縮檔裡的檔案檔名含有任何非英文的字元(例如中文檔名),解壓縮時就會發生嚴重的亂碼問題,直到這幾天我才找到解決方法。

:以下是為了不變更 Mac 用戶的使用習慣下,解決 Windows 使用者能正常解壓縮 ZIP 檔的方法!

方法一:安裝 Zipeg 解壓縮軟體

該軟體用 Java 寫成,由於與 Windows 相容性較差,他一定要經過安裝程序才能使用 (不算綠色軟體),且操作介面難用無比,唯一的優點就是可以正確解開 Mac 環境下壓縮過含有中文檔名的 ZIP 檔案,所以我不打算詳細介紹他,有興趣研究的人還是可以用看看。

備註:該軟體移除的方法是從控制台的新增移除程式移除該軟體。

 

方法二:下載 DotNetZip Library 的指令列工具 ( UnZip.exe )

我們先到 http://dotnetzip.codeplex.com/releases 下載 DotNetZipTuils 工具,如下圖示:

要先同意授權條款才能下載檔案(此軟體是 Ms-PL 授權)

打開壓縮檔後,如果你只是單一目的【想要解壓縮 Mac 環境下壓縮過含有中文檔名的 ZIP 檔案】的話,那麼你可以僅解壓縮如下圖這兩個檔案即可:

接著,透過命令提示字元即可正確解壓縮 Mac 環境下壓縮過含有中文檔名的 ZIP 檔案!

以下是常見的指令用法:

UnZip.exe:  extract or list or test the entries in a zip file.
Depends on Ionic's DotNetZip library. This is version 1.9.1.8 of the utility.
usage:
unzip [options] <zipfile> [<entryname>...]
unzips all files in the archive.
options:
- emit extracted content to stdout.
-o overwrite existing files if necessary.
-f flatten directory structure when extracting.
-p <password> specify password for extraction.
-t test the file for consistency.
-q operate quietly (no verbose messages).
-cp <codepage> extract with the specified numeric codepage. Only do this if you
know the codepage, and it is neither IBM437 nor UTF-8. If the
codepage you specify here is different than the codepage of
the cmd.exe, then the verbose messages will look odd, but the
files will be extracted properly.
-d <directory> unpack to the specified directory. If none provided, it will
unzip to the current directory.
<entryname> unzip only the specified filename.

unzip -l <zipfile>
lists the entries in the zip archive.
unzip -i <zipfile>
displays full information about all the entries in the zip archive.
unzip -t <zipfile> [-p <password>] [-cp <codepage>]
tests the zip archive.
unzip -r <zipfile>
repairs the zip archive - rewriting the directory.
unzip -?
displays this message.

若要正確解壓縮 Mac 環境下壓縮過含有中文檔名的 ZIP 檔案,可以參考以下示範步驟:

1. 我們先找一個 sample.zip 壓縮檔,我們用 7-zip 或 Windows 檔案總管開啟你都會發現檔名都亂掉了!

2. 此時我們用 UnZip.exe 搭配 -cp 65001 參數指定壓縮檔內的檔名字碼頁(CodePage),並搭配 -l 參數顯示檔名就好,我們先不解壓縮:

Unzip.exe -cp 65001 -l sample.zip

這時你會發現檔名都正常了:

3. 最後我們在用相同的參數,但將 -l 參數移除,正式將此檔案解壓縮!

Unzip.exe -cp 65001 sample.zip

歐耶~ 完美的解壓縮成功了!

如果你想解壓縮到特定目錄下,可以加上 -d 參數,如下範例:

Unzip.exe -cp 65001 -d sample sample.zip

 

備註:在目前最新版的 DotNetZipUtils-v1.9 工具裡雖然有個 DotNetZip-WinFormsTool.exe 視窗工具,但該工具只能正確顯示檔名,卻無法正確解壓縮!此問題我已經回報作者,不過等他們推下一版不知等到何時,所以我自己已經修正原始碼並重新編譯放在這裡,有需要的人可以自行下載。

 

§ 給 Mac 用戶的建議

為了不讓 Windows 使用者在開啟從 Mac 壓縮的 ZIP 檔案時出現亂碼,建議可以下載免費的 Keka 壓縮工具 (透過 Apple Store 下載要 2.99 美金,但手動從官網下載 dmg 安裝檔免費),用這套工具壓縮好的 ZIP 或 7z 檔,都能正常在 Windows 平台正常解壓縮,感謝你們的大德! ^_^

 

相關連結