2010年5月7日

解決 OS X ZIP 壓縮檔在 Windows 下無法解壓縮的問題



Mac OS X 與 Windows 在互相交換 ZIP 壓縮檔是一件很微妙的事,Windows 產出的 ZIP 檔,Mac 都可以很順利的解壓縮,但由 Mac OS X 產出的 ZIP 檔,只要檔案中有任何的中文檔名,那麼 Windows 就無法解開了,而當場出現錯誤給你看。這中間到底有什麼問題呢?

由於身旁 Windows 使用者眾多,因此多年下來,早就養成壓縮 ZIP 檔時都要檢查一下檔名,檔案少時還無所謂,要是檔案數量一多,還真煩不勝煩,不過...也習慣了。在一次偶然的機會中,看到了 MacWinZipper  這套由日本人開發出來的軟體,號稱由它壓縮出來的 ZIP 檔,就算有內含非英文的檔名,一樣可以 在Windows 下順利解壓縮。

實測之下,發現的確可以,不過,只對日文檔案有效,對中文沒輒 。概然好奇心被挑起來了,就去做了一下功課,發現有個日本論壇 討論到了這事。

Following PKWare's AppNote, if filename is encoded with UTF-8, it must set general archive 11th bit flag or use extra UTF-8 zip filename header. But Apple's archiver never care about it. So even UTF-8 supported Winzip in Windows can't extract it properly with Apple's zip archive file. Therefore they never recognize that filename is UTF-8 when they are decompressing. It makes non-readable filenames.
Ironically, WIndows's NTFS use UTF-16 internally. So it store any Unicode characters. Why Windows built-in zip utility don't support UTF-8 filename? 
I think it's the matter of compatibility with legacy DOS zip archive files. But this legacy support makes so many annoying issue while exchanging files between foreign users.

其大意就是,兩個平台各有各的毛病與問題,導致了這樣的問題。所以有一種解決方式,那就是改用 RAR 或 7Z 格式來壓縮檔案,但麻煩的是 Winodws 與 Mac OS X 的預設壓縮格式都是 ZIP ,ZIP 也是目前最不用擔心別人解不開的壓縮檔了。

況且,對Mac使用者來說,系統預設只要選取檔案,再按滑鼠右鍵即可壓縮的便利性還是很吸引人的,要使用者再打開程式來壓縮,有時還真是麻煩。(當然,對玩家而言,用 Automator 做一個 service 就可以解決,但對一般人而言...,呃,還真是自找麻煩)

不過這位回答問題的好,解答了我的疑惑,更讚的是,他也提供了解決的方法,他另外弄了一個 CleanArchiver 的分支軟體來解決這問題。

Original version of Cleanarchiver and my modified version have a different function and point of view.
I don't want to make it as fork version, but He and I have different opinions on implemeting Cleanarchiver. So I made fork version.

好吧,話講了一堆,導入正題,要決壓縮 Zip 會出問題的毛病,先去這位偉大無私的韓國工程的網站下載這個特製版的 CleanArchiver 程式 。

▲下載後執行 CleanArchiver 做一下設定,基本上就是ZIP格式要選擇「Big-5」的格式就對了。



▲比較一下,這是官方版的 CleanArchiver 的設定,可以發現它在ZIP的編碼選擇較少。

前面也說到,按滑鼠右鍵壓縮的便利性是很便利的事,而 CleanArchiver 會在右鍵選單中加入「Archive in Zip 」、「Archive in Rar」、「Archive in 7z」的功能,不用自己用 Automator 來加入,就算不太懂電腦也可以輕鬆的使用,跟原本預設的壓縮功能也相去不遠了。

▲ CleanArchiver 會自動在滑鼠右鍵選單中加入壓縮功能

而 CleanArchiver 也如同其名,在壓縮時會去除 Mac 上特有的「.DS_STORE」的屬性記錄檔案,讓 Windows 的使用者解開檔案不會看到一堆不知做何用途的東西。

要注意的是 CleanArchiver 只負責壓縮,解壓縮的話除了用 OS X 系統內預設的 Archive Utility 外,若考慮到RAR與7Z等其他格式,也可以考慮不用錢的 The Unarchiver、Stuffit Expander、Zipeg 或要付錢的 BetterZip。

1 則留言: