這裡介紹如何在 Linux 中解壓縮包含中文字的壓縮檔,解決 big5 編碼會產生亂碼的問題。

如果在 Windows 中建立含有中文檔名的 zip 壓縮檔,拿到 Linux 中解壓縮時,原本的中文檔名就會很變成一堆亂碼。


linux-decompression-chinese-zip-files-1

中文檔名解壓縮後變亂碼

遇到這樣的狀況可以使用 convmv 來解決,首先安裝這個工具,以 Debian 系列的 Linux 來說,可用 apt 安裝:

sudo apt-get install convmv

接著使用 unzip 配合 LANG=C 來解壓縮,這樣可以讓 unzip 以原本的 big5 編碼來解壓縮:

LANG=C unzip file.zip

其中 file.zip 就是要解壓縮的 zip 檔。如果習慣使用 7z 的人,也可以加上 LANG=C 來解壓縮:

LANG=C 7z x file.zip

而解壓縮之後,檔案名稱看起來會像這樣:

linux-decompression-chinese-zip-files-2

解壓縮 Big5 編碼的檔案

這裡解壓縮出來的檔案名稱已經是使用 big5 編碼了,只不過終端機的預設編碼是萬國碼(utf8),所以看起來還是亂碼,接著在這個含有中文檔名的目錄中,使用 convmv 將 big5 編碼的檔案名稱轉換為萬國碼(utf8):

convmv -f big5 -t utf8 -r --notest *

轉換完成之後,中文的檔案名稱就會恢復正常了:

linux-decompression-chinese-zip-files-3

正常的中文檔名

Image Credit:Charles Chen