Windows系统解压zip文件之后乱码的问题的原因和解决方法

我昨天用7zip压缩了一个压缩包给我同事,他那边显示的是乱码。
像下面这样。

在这里插入图片描述具体的原因是:

  1. 7zip压缩zip格式的文件的时候,对文件名默认使用的是Windows系统的默认编码,我的系统的默认编码是936,可以使用chcp命令查看。

  2. 而我同事的系统的默认编码是437,是Windows用来支持显示英语/德语的编码。

所以使用7zip解压后会出现乱码的问题。

解决方法有三个:

  1. 我在发送zip文件的时候,使用7z格式发送压缩包或者还是使用zip格式,但是让7z把文件名转换成unicode格式
    在这里插入图片描述

  2. 可以在对方的系统设置中,设置一下。
    在这里插入图片描述

  3. 使用bandzip或者别的软件
    在这里插入图片描述

https://blog.csdn.net/lee_ham/article/details/82634411
https://blog.miniasp.com/post/2020/09/14/7-Zip-with-Chinese-filenames-should-use-UTF-8
https://www.zhihu.com/question/384336846

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你好!你的问题是关于Java解压zip包后出现乱码问题。在Java中,解压zip文件的主要方式是使用ZipInputStream类。如果出现乱码,可能是因为在解压过程中没有指定正确的字符集编码导致的。下面是一个Java解压zip文件的示例代码: ``` public static void unzip(String zipFilePath, String destDir) throws IOException { byte[] buffer = new byte[1024]; ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFilePath), Charset.forName("GBK")); ZipEntry zipEntry = zis.getNextEntry(); while (zipEntry != null) { String fileName = zipEntry.getName(); File newFile = new File(destDir + File.separator + fileName); FileOutputStream fos = new FileOutputStream(newFile); int len; while ((len = zis.read(buffer)) > 0) { fos.write(buffer, 0, len); } fos.close(); zipEntry = zis.getNextEntry(); } zis.closeEntry(); zis.close(); } ``` 在这个示例中,我们指定了解压文件使用的字符集编码为GBK。这是因为在中文Windows操作系统中,zip文件的默认字符集编码就是GBK。如果你的zip文件使用的是其他字符集编码,你需要相应地更改代码中的字符集编码设置。 另外,如果你的zip文件中包含了压缩前已经出现乱码文件名,那么解压后还是会出现乱码。这是因为文件名的乱码已经被写入到zip文件中了。如果你需要解决这个问题,可以尝试使用ZipFile类来打开zip文件,并使用ZipEntry的getName()方法获取正确的文件名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值