linux下zip文件解壓亂碼該如何解決?

由于zip格式中并沒有指定編碼格式,windows下生成的zip文件中的編碼是gbk/gb2312等,因此,導(dǎo)致這些zip文件在linux下解壓時(shí)出現(xiàn)亂碼問題,因?yàn)?a href="http://m.babyishan.com/tag/linux">linux下的默認(rèn)編碼是utf8。

目前網(wǎng)上流傳一種unzip -O cp936的方法,但一些unzip是沒有-O這個(gè)選項(xiàng)的。

我使用的版本 unzip 6.0 debian modified 版本有這個(gè)選項(xiàng)

因?yàn)榫幋a問題,zip文件中的中文文件在linux下解壓會(huì)出現(xiàn)亂碼

如果你使用archlinux那么使用AUR安裝unzip-natspec就可以解決這個(gè)問題

這個(gè)時(shí)候,使用unzip xxx.zip就可以正確解壓文件

然后在file-roller歸檔管理器中操作,中文名稱依然是亂碼,據(jù)說是因?yàn)閒ile-roller優(yōu)先使用p7zip

刪除p7zip后問題解決

然而我還想同時(shí)能夠使用p7zip軟件包,誰知道這個(gè)問題如何解決?

從這里下載代碼研究,發(fā)現(xiàn)這樣的邏輯

    /* 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;      }

這里是寫死的,看起來除了給代碼打補(bǔ)丁是沒什么好辦法了

最后的解決辦法,發(fā)現(xiàn)AUR中同樣存在類似的軟件包p7zip-natspec

安裝這個(gè)包應(yīng)該就可以完美的解決問題吧,因?yàn)槲乙呀?jīng)使用上面的方法解決了問題,就不試這個(gè)了

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享