[舊文重貼]解決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來處理了
但想不到 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來處理了
留言