1.當我們使用linux原本的unzip,進行解壓時,解壓縮的檔案如下,你無法使用convmv轉換
2.修正unzip後,解開的結果如下(unzip windows壓縮文件.zip -d temp,把解開的目錄,放到temp目錄中)
修正的unzip,可到此下載:ftp://ftp3.tnc.edu.tw/KNOPPIX/health/kgubuntu/unzip
ps.修正的unzip的方法,如說明
3.安裝nautilus-filename-repairer套件,對新解開的檔案按右鍵,可以看到正確的中文檔名->rename as "windows中文壓縮檔",不過ubuntu9.04的這個套件有bug,當你按下rename as XXX,卻毫無反應,再ubuntu8.10時,是可正確進行轉換的,所以我們要借助convmv來轉換
4.安裝convmv後,執行以下的指令,可以遞迴的將目錄中的所有檔案進行轉碼
convmv -r --notest -f big5 -t utf-8 temp/
轉換成功,如下所示
5.若不想這麼麻煩,可以以wine安裝7z的windows軟體,用他來解壓縮即可
ps:unzip修正說明:
sudo apt-get source unzip
tar xzvf unzip_5.52.orig.tar.gz
cd unzip*
gedit unzpriv.h
把所有
*p = native((*p & 0×80) ? oem2iso[*p & 0×7f] : *p);}
改為
*p = native(*p);}
如下:
# ifdef CRTL_CP_IS_OEM
# ifndef IZ_ISO2OEM_ARRAY
# define IZ_ISO2OEM_ARRAY
# endif
# define _ISO_INTERN(str1) {register uch *p;\
for (p=(uch *)(str1); *p; p++)\
*p = native(*p);}
# else
# define _ISO_INTERN(str1) A_TO_N(str1)
# endif
#endif
#ifndef _OEM_INTERN
# ifdef CRTL_CP_IS_OEM
# define _OEM_INTERN(str1) A_TO_N(str1)
# else
# ifndef IZ_OEM2ISO_ARRAY
# define IZ_OEM2ISO_ARRAY
# endif
# define _OEM_INTERN(str1) {register uch *p;\
for (p=(uch *)(str1); *p; p++)\
*p = native(*p);}
make -f unix/Makefile generic
把新的unzip覆蓋/usr/bin/unzip即可
沒有留言:
張貼留言