美文网首页
iOS使用react-native-zip-archive解压w

iOS使用react-native-zip-archive解压w

作者: 物联白菜 | 来源:发表于2022-11-25 16:28 被阅读0次

    在使用react-native-zip-archive时,因为压缩包是使用Windows系统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系统上使用GBK解压没有任何问题,但是在iOS手机上解压时,会出现乱码

    乱码图:


    图片.png

    我尝试了在unzip函数里面传入编码UTF-8、US-ASCII、GB18030、GBK等均无效,后来想到读取文件流转编码格式以失败告终。然后各种百度找了两三天,也没见人有说这个库有没有问题,不知道是他们没遇到这种问题还是懒得记录,又或是对于他们简简单单,但是对于一个对某方面不理解的人来说,要解决还是挺费劲,费劲在于没有思路,而知道的,或许只需要一个变量就可以搞定,react-native-zip-archive官网上看issues有个俄罗斯的也出现这样的问题,但是没有说解决办法。
    后面查了半天,最后发现一个博主说挺简洁的https://blog.csdn.net/ismilesky/article/details/52767654,尝试改了iOS的原生代码。只改了一个参数,其实并不是这个库有问题,而是苹果系统本身默认的,修改方法如下:

    1、全局搜索:SSZipArchive,找到SSZipArchive.m文件,或者你下图中的路径去找SSZipArchive.m文件,找到后双击进去。


    图片.png

    2、在SSZipArchive.m文件中搜索NSStringEncoding encoding或者kCFStringEncodingDOSLatinUS等字样,反正是关于转编码的地方,因为我不确定不同版本的是不是同一个变量或者字符。
    将kCFStringEncodingDOSLatinUS 改为 kCFStringEncodingGB_18030_2000,
    如图:


    图片.png

    然后重新跑就可以了。

    修改后正常解压:


    图片.png

    相关文章

      网友评论

          本文标题:iOS使用react-native-zip-archive解压w

          本文链接:https://www.haomeiwen.com/subject/vdrxfdtx.html