由于zip格式中并沒有指定編碼格式,windows下生成的zip文件中的編碼是gbk/gb2312等,因此,導致這些zip文件在linux下解壓時出現亂碼問題,因為linux下的默認編碼是utf8。
目前網上流傳一種unzip -O cp936的方法,但一些unzip是沒有-O這個選項的。
我使用的版本 unzip 6.0 debian modified 版本有這個選項
因為編碼問題,zip文件中的中文文件在linux下解壓會出現亂碼
如果你使用archlinux那么使用AUR安裝unzip-natspec就可以解決這個問題
這個時候,使用unzip xxx.zip就可以正確解壓文件
然后在file-roller歸檔管理器中操作,中文名稱依然是亂碼,據說是因為file-roller優先使用p7zip
刪除p7zip后問題解決
然而我還想同時能夠使用p7zip軟件包,誰知道這個問題如何解決?
從這里下載代碼研究,發現這樣的邏輯
/* give priority to 7z, unzip and zip that supports ZIP files better. */if ((strcmp (mime_type, "application/zip") == 0)|| (strcmp (mime_type, "application/x-cbz") == 0)) {if (_g_program_is_available ("7z", check_command)) {return capabilities; }if (!_g_program_is_available ("unzip", check_command)) { capabilities |= FR_ARCHIVE_CAN_READ; }if (!_g_program_is_available ("zip", check_command)) { capabilities |= FR_ARCHIVE_CAN_WRITE; }return capabilities; }
這里是寫死的,看起來除了給代碼打補丁是沒什么好辦法了
最后的解決辦法,發現AUR中同樣存在類似的軟件包p7zip-natspec
安裝這個包應該就可以完美的解決問題吧,因為我已經使用上面的方法解決了問題,就不試這個了
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END