Android Ionic原生Zip插件始终返回“0”;“失败”;在解压缩具有俄语名称的zip文件时

Android Ionic原生Zip插件始终返回“0”;“失败”;在解压缩具有俄语名称的zip文件时,android,ionic-framework,zip,unzip,Android,Ionic Framework,Zip,Unzip,我正在使用Ionic的原生Zip插件,并为Android开发一个应用程序(从这里开始)。我从服务器下载一个zip文件,并将其存储在file.externalDataDirectory中。我可以在文件夹中找到它并在我的设备上手动解压缩。但是当我尝试使用插件以编程方式解压它时,它总是返回-1,这意味着它失败了 下面是我的代码,甚至没有调用progress函数。文件名包含下划线 this.zip.unzip(this.file.externalDataDirectory+“my_file.zip”、t

我正在使用Ionic的原生Zip插件,并为Android开发一个应用程序(从这里开始)。我从服务器下载一个zip文件,并将其存储在file.externalDataDirectory中。我可以在文件夹中找到它并在我的设备上手动解压缩。但是当我尝试使用插件以编程方式解压它时,它总是返回-1,这意味着它失败了

下面是我的代码,甚至没有调用progress函数。文件名包含下划线

this.zip.unzip(this.file.externalDataDirectory+“my_file.zip”、this.file.externalDataDirectory、,
(progress)=>console.log('unzip',+Math.round((progress.loaded/progress.total)*100)+'%'))
。然后((结果)=>{
if(result==0)console.log('SUCCESS');
if(result=-1)console.log('FAILED');
})

我还尝试对路径进行硬编码,但结果是一样的:

this.zip.unzip(“file:///storage/emulated/0/Android/data/com.myapp/my_file.zip", "file:///storage/emulated/0/Android/data/com.myapp/", 
(progress)=>console.log('unzip',+Math.round((progress.loaded/progress.total)*100)+'%'))
。然后((结果)=>{
if(result==0)console.log('SUCCESS');
if(result=-1)console.log('FAILED');
})

有人能帮我吗


编辑:我发现只有zip中的文件名是俄语时才会出现问题。不过,zip存档名称本身只包含个数字。

好的,所以我想出了解决方案。我修改了插件的Java文件,并向构造函数charset.forName(“CP1251”)添加了一个charset参数:

ZipInputStream zis = new ZipInputStream(inputStream, Charset.forName("CP1251"));