new ZipInputStream(new FileInputStream("test.zip"), StandardCharsets.UTF_8)
没有用呢,中文的文件、文件夹仍会报错(malformed input off : 1, length : 1
)。
这里都有注释的嘛,为什么会这样?
你把编码换成GBK就可以了:
FileInputStream input = new FileInputStream(targetPath);ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(input), Charset.forName("GBK"));
原因是操作系统平台的差异,导致zip压缩包的编码格式不同,windows默认使用GB2312格式,mac和linux默认使用UTF-8格式,你指定UTF-8对于GB2312的字符转化没有起作用,而GBK是兼容GB2312的。
如果你想你的代码无视操作系统差异,可以使用Apache Commons Compress
这个包的压缩/解压缩方法试试:
https://zhuanlan.zhihu.com/p/389762356
介绍 (Introduction) java.util.zip.ZipInputStream类实现了一个输入流过滤器,用于读取ZIP文件格式的文件。 包括对压缩和未压缩条目的支持。 类声明 以下是java.util.zip.ZipInputStream类的声明 - public class ZipInputStream extends InflaterInputStream 字段 (Fie
本文向大家介绍Python 去除字符串中指定字符串,包括了Python 去除字符串中指定字符串的使用技巧和注意事项,需要的朋友参考一下 1、背景 最近的项目中,再次踩到Python字符串处理的坑,决定把此次解决方案记录一下,以勿踩坑。 2、遇到坑 原本字符串:大坪英利国际8号楼88-88号重庆汉乔科技有限公司大坪英利国际8号楼 去除最左边的字符串:大坪英利国际8号楼 预期结果:88-88号重庆汉乔
问题内容: 当使用 固定宽度的字体时 ,我想用 字符 指定HTML元素的宽度。 “ em”单位应该是M字符的宽度,因此我应该能够使用它来指定宽度。这是一个例子: 结果不是我想要的结果,因为浏览器行在第15列之后而不是10处中断: (结果是Firefox和Chromium,都在Ubuntu中。) 问题答案: 1em是M的高度,而不是宽度。同样适用于ex,即x的高度。一般来说,这些是大写和小写字母的高
本文向大家介绍Java字符串中删除指定子字符串的方法简介,包括了Java字符串中删除指定子字符串的方法简介的使用技巧和注意事项,需要的朋友参考一下 有些字符串是我们存储某种类型名称的,往往有逗号‘,'或者其他符号来分隔。如果我们删除某一个参数时,往往没有数组或者列表那么方便。但是,如果有了下面这个方法,我们同样可以做好。 打印结果: 下面回顾一下JDK1.6中的replaceAll方法说明: re
本文向大家介绍JS正则表达式获取指定字符之后指定字符之前的字符串(推荐),包括了JS正则表达式获取指定字符之后指定字符之前的字符串(推荐)的使用技巧和注意事项,需要的朋友参考一下 一个常见的场景,获取:标签背景图片链接: 如字符串:var bgImg = "url (\"https://img30.360buyimg.com/sku/jfs/t26203/262/100869187/204098/
主要内容:到底使用字符数组还是字符串常量C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在《 C语言字符数组和字符串》中已经进行了详细讲解,这里不妨再来演示一下: 运行结果: https://www.xnip.cn https://www.xnip.cn 字符数组归根结底还是一个数组,上节讲到的关于 指针和数组的规则同样也适用于字符数组。更改上面的代码,使用指针的方式来输出字符串: 运行结果: https://ww