windows下打包的ZIP包在LINUX下中文内容乱码解决

简介: 百度网盘打包下载后是pack.zip,如果下载的内容是中文的话,直接用zip解压是会出现乱码 [t@bjb0541 ~]$ unzip pack.zip Archive:  pack.
百度网盘打包下载后是pack.zip,如果下载的内容是中文的话,直接用zip解压是会出现乱码
[t@bjb0541 ~]$ unzip pack.zip
Archive:  pack.zip
   creating: -?+?/TCP-IP???/
 extracting: -?+?/TCP-IP???/TCP-IP????2??-???.pdf  
 extracting: -?+?/TCP-IP???/TCP-IP????1??????.pdf  
 extracting: -?+?/TCP-IP???/TCP-IP????3??TCP--+?????.pdf  
[t@bjb0541 ~]$ ^C
[t@bjb0541 ~]$  cd /home/talen/-?+?
bash: cd: /home/talen/-?+?: No such file or directory

[t@bjb0541 ~]$ ls -l
...
2621858 drwx------. 3 t t     4096 Mar 23 16:07 ?鼮


下面是解决方法:
创建/tmp/a目录,在此目录下解决文件.创建此目录的目的是减少第二步搜索的范围.
[t@bjb0541 ~]$ cd /tmp/a/
[t@bjb0541 a]$ LANG=C ; 7z x /home/talen/pack.zip

7-Zip [64] 15.09 beta : Copyright (c) 1999-2015 Igor Pavlov : 2015-10-16
p7zip Version 15.09 beta (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i3 CPU       M 380  @ 2.53GHz (20655),ASM)

Scanning the drive for archives:
1 file, 54796877 bytes (53 MiB)

Extracting archive: /home/talen/pack.zip
--         
Path = /home/talen/pack.zip
Type = zip
Physical Size = 54796877

执行convmv -f GBK -t utf8 --notest -r .
[t@bjb0541 a]$ convmv -f GBK -t utf8 --notest -r .
mv "./?鼮/TCP-IP????/TCP-IP??????3??TCP????Э??.pdf"     "./?鼮/TCP-IP????/TCP-IP详解卷3:TCP事务协议.pdf"
mv "./?鼮/TCP-IP????/TCP-IP??????1??Э??.pdf"    "./?鼮/TCP-IP????/TCP-IP详解卷1:协议.pdf"
mv "./?鼮/TCP-IP????/TCP-IP??????2?????.pdf"    "./?鼮/TCP-IP????/TCP-IP详解卷2:实现.pdf"
mv "./?鼮/TCP-IP????"   "./?鼮/TCP-IP详解"
mv "./?鼮"      "./书籍"
Ready! I converted 5 files in 0 seconds.
可以看到非常完美.

有一些包7z可能解压出来是0字节,可以试下python脚本:

点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import os
  4. import sys
  5. import zipfile
  6. #print "Processing File " + sys.argv[1]
  7. file=zipfile.ZipFile(sys.argv[1],"r");
  8. for name in file.namelist():
  9.     utf8name=name.decode('gbk')
  10. # print "Extracting " + utf8name
  11.     pathname = os.path.dirname(utf8name)
  12.     if not os.path.exists(pathname) and "":
  13.         os.makedirs(pathname)
  14.     data = file.read(name)
  15.     if not os.path.exists(utf8name):
  16.         fo = open(utf8name, "w")
  17.         fo.write(data)
  18.         fo.close
  19. file.close()

  20. #作者:Latm Ake
  21. #链接:http://www.zhihu.com/question/20523036/answer/35225920
  22. #来源:知乎
  23. #著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


参考:http://www.zhihu.com/question/20523036
目录
相关文章
|
7月前
|
Linux 数据安全/隐私保护 Windows
Linux共享Windows目录
Linux共享Windows目录
|
3月前
|
安全 网络协议 Linux
telnet在windows和linux上的使用方法
Telnet是一个简单且强大的网络工具,广泛用于远程管理和网络诊断。尽管存在安全风险,但在受控环境中,Telnet仍然是一个非常有用的工具。通过本文的介绍,您应该能够在Windows和Linux系统上安装并使用Telnet进行各种网络操作。
227 18
|
3月前
|
Ubuntu 网络协议 Linux
快速部署WSL(Windows Subsystem for Linux)
WSL提供了一种轻量级的方法,使开发者能够在Windows上无缝运行Linux环境。通过本文介绍的步骤,可以快速安装、配置和使用WSL,以满足开发和测试的需求。
250 8
|
4月前
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
109 32
|
3月前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
6月前
|
Windows
windows 乱码之 gbk 与 cp936|4-3
windows 乱码之 gbk 与 cp936|4-3
|
5月前
|
关系型数据库 MySQL Linux
Navicat 连接 Windows、Linux系统下的MySQL 各种错误,修改密码。
使用Navicat连接Windows和Linux系统下的MySQL时可能遇到的四种错误及其解决方法,包括错误代码2003、1045和2013,以及如何修改MySQL密码。
582 0
|
7月前
|
Unix Linux Ruby
在windows和linux上高效快捷地发布Dash应用
在windows和linux上高效快捷地发布Dash应用
290 4
|
7月前
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
671 3
|
7月前
|
Ubuntu Linux 虚拟化
安装Windows Linux 子系统的方法:适用于windows 11 版本
本文提供了在Windows 11系统上安装Linux子系统(WSL)的详细步骤,包括启用子系统和虚拟化功能、从Microsoft Store安装Linux发行版、设置WSL默认版本、安装WSL2补丁,以及完成Ubuntu的首次安装设置。
1746 2