在使用react-native-zip-archive時,因為壓縮包是使用Windows系統(tǒng)GBK壓縮,代碼如下
let zipPath = `${Util.fileDirPath}/source/3459-zjspdyj-1.1.zip`
let unzipPath = `${Util.fileDirPath}/source/測試2`
unzip(zipPath, unzipPath, 'GBK') //壓縮包里面包含中文字符則用GBK
.then((path) => {
console.log(`unzip completed at ${path}`)
})
.catch((error) => {
console.error(error)
let content = `解壓失敗`
Common.writeLog(content)
})
因為壓縮包里面包含中文,在Android系統(tǒng)上使用GBK解壓沒有任何問題,但是在iOS手機上解壓時,會出現(xiàn)亂碼
亂碼圖:

我嘗試了在unzip函數(shù)里面?zhèn)魅刖幋aUTF-8、US-ASCII、GB18030、GBK等均無效,后來想到讀取文件流轉(zhuǎn)編碼格式以失敗告終。然后各種百度找了兩三天,也沒見人有說這個庫有沒有問題,不知道是他們沒遇到這種問題還是懶得記錄,又或是對于他們簡簡單單,但是對于一個對某方面不理解的人來說,要解決還是挺費勁,費勁在于沒有思路,而知道的,或許只需要一個變量就可以搞定,react-native-zip-archive官網(wǎng)上看issues有個俄羅斯的也出現(xiàn)這樣的問題,但是沒有說解決辦法。
后面查了半天,最后發(fā)現(xiàn)一個博主說挺簡潔的https://blog.csdn.net/ismilesky/article/details/52767654,嘗試改了iOS的原生代碼。只改了一個參數(shù),其實并不是這個庫有問題,而是蘋果系統(tǒng)本身默認的,修改方法如下:
1、全局搜索:SSZipArchive,找到SSZipArchive.m文件,或者你下圖中的路徑去找SSZipArchive.m文件,找到后雙擊進去。

2、在SSZipArchive.m文件中搜索NSStringEncoding encoding或者kCFStringEncodingDOSLatinUS等字樣,反正是關(guān)于轉(zhuǎn)編碼的地方,因為我不確定不同版本的是不是同一個變量或者字符。
將kCFStringEncodingDOSLatinUS 改為 kCFStringEncodingGB_18030_2000,
如圖:

然后重新跑就可以了。
修改后正常解壓:
