[舊文重貼]解決linux下unzip亂碼問題

我記得 ubuntu 6.10後來某次升級的版本有處理掉這個問題
但想不到 7.04又發生了..
只好拿出之前寫的筆記囉!

在windwos下壓縮的檔案,在linux以unzip解壓時,會發生中文檔案亂碼的問題
原本以為是編碼的問題,但竟然發生編碼無法對應回來的問題

原因發生是在windows下winzip對zip檔的type設定錯誤,
linux下暫時先用leeym 大大的 patch來解決
以下是以ubuntu為例:

1.取得unzip的source
#apt-get source unzip
接著會產生 unzip-版本的目錄(筆者測試時為unzip-5.52)

2.修改unzpriv.h
找到_OEM_INTERN
將此區段中,
*p = native((*p & 0x80) ? oem2iso[*p & 0x7f] : *p);}
改為
*p = native(*p);}

3.重新編譯unzip
#make -f unix/Makefile generic
產生的unzip檔案,再換掉原來的/usr/bin/unzip
如此unzip才能正確解出屬於該檔案編碼的檔案

即使做了上述修改
unzip在utf8下解出來的依然是亂碼
但修正過後的亂碼已經可以用convmv來處理了

留言

這個網誌中的熱門文章

[Linux] 如何 hex 字串 與 文字互轉

記下 openssh 中 sftp的log

[linux]用指令來做音量控制