關於ZipArchive 解壓中文編碼亂碼的問題

2021-07-15 09:40:16 字數 1160 閱讀 1972

你在網上會搜尋到很多方法,多數方法是這樣的:

在ziparchive.mm檔案中,找到如下方法:

-(bool) unzipfileto:(nsstring*) path overwrite:(bool) overwrite

將:

nsstring * strpath = [nsstring  stringwithcstring:filename];

替換為:

nsstringencoding enc = cfstringconvertencodingtonsstringencoding(kcfstringencodinggb_18030_2000);

nsstring * strpath = [nsstring stringwithcstring:filename encoding:enc]; //正確! 這個地方應該是跟壓縮時的編碼對應上才對。

將:

file* fp = fopen( (const char*)[fullpath utf8string], "wb");

替換為:

file* fp = fopen( (const char*)[fullpath cstringusingencoding:cfstringconvertencodingtonsstringencoding(kcfstringencodinggb_18030_2000)], "wb");

可以解決問題。這個應該是對的。前提是:上面的注釋,這個地方應該是跟壓縮時的編碼對應上才對。

而實際上,你的專案可能會不正確。那麼,有可能就是壓縮時的編碼不對,沒有關係。

你還可以這麼試一下:

只將:

nsstring * strpath = [nsstring  stringwithcstring:filename];

替換為:

這樣就跟下面這句:

file* fp = fopen( (const char*)[fullpath utf8string], "wb"); // 這是原來的

兩個編碼對應上了。如果,壓縮時也是這樣的。那就成功了。

IOS 使用ZipArchive解壓檔案

引入框架 libz.dylib 引入標頭檔案 ziparchive.h ibaction unzipclick ziparchive zip ziparchive alloc init bool result if zip unzipopenfile filepath result zip unzi...

ZipArchive壓縮和解壓縮

利用 cocopods 新增第三方類庫 ziparchive 壓縮 1.根據檔案管理器建立壓縮物件zip nsfilemanager manager nsfilemanager defaultmanager ziparchive zip ziparchive alloc initwithfilema...

IOS下利用ziparchive解壓縮zip檔案

ziparchive是基於開源 minizip 的zip壓縮與解壓的objective c 的class,使用起來非常的簡單 使用方法 1.壓縮 ziparchive可以壓縮多個檔案,只需要把檔案一一addfiletozip即可.2.解壓縮 ziparchive zip ziparchive all...