解决mac压缩包在windows下解压乱码问题。

我用的360压缩,然后出现乱码。

解决方法:可以下载最新的winrar,5以上的版本。

原因从别的地方查到的:备份一下。

详情可以参看这里:感谢作者。

http://frank19900731.github.io/blog/2015/02/11/jie-jue-mac-xia-zip-ya-suo-wen-jian-zai-windows-xia-xian-shi-luan-ma-de-wen-ti/

知乎上关于这个问题的 解答 是

Mac OS X 系统自带的压缩程序对 zip 文件名用 UTF-8 编码,但 zip 文件头中没有声明 PKZIP 高版本增加的 Unicode 位。Windows 会认为文件名是 ANSI 编码,结果显示乱码。

经过简单的资料阅读和测试,我大概验证了下这种解释。

用 locale 命令查看我的 MBP 系统编码,确实是 UTF-8。

系统编码
1 2 3 4 5 6 7 8 9 
$> locale LANG="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_CTYPE="zh_CN.UTF-8" LC_MESSAGES="zh_CN.UTF-8" LC_MONETARY="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_ALL= 

关于 ANSI 编码 ,在中文 Windows 系统中可能是 GBK 编码,而在其他语言的 Windows 系统又可能是别的。可以想见,Mac 下打出的压缩包在不同语言的 Windows 下会乱得各具特色

当然,并不是所有解压缩软件都会一股脑地用 ANSI 编码进行解压。有的解压软件能够自动识别(文件名)编码并不确定的时候请使用者选择,比如 Mac 下的 The Unarchiver。根据我在中文 Win7 下的测试,不同的解压缩软件对压缩文件的默认“理解”也是不同的,快压会解出乱码,而 7zip、Winrar 则可以正确解码。

一种直观的想法是,可以对文件名给出统一编码格式或者将编码写进压缩文件供解压缩程序读取。然而,Zip files and Encoding – I hate you. 中提到

The Zip spec does not seem to know that there are normalization models for UTF-8, when there are actually 4 (or more, because there is some non-standard ones too!). The Zip file gives no guidance as to how file names inside zip files are to be normalized.

The Zip spec says that the only supported encodings are CP437 and UTF-8, but everyone has ignored that. Implementers just encode file names however they want (usually byte for byte as they are in the OS…

很遗憾,Mac 自带的 zip 命令就属于最后一句中 Implementers。虽然我不是很清楚“文件头中没有声明 PKZIP 高版本增加的 Unicode 位”中的细节,不过后来通过比较发现,无乱码和有乱码的 zip 文件,以 16进制方式查看时,文件名中中文字符的编码是一样的不同之处确实在 zip 文件头

时间: 2024-10-08 13:34:59

解决mac压缩包在windows下解压乱码问题。的相关文章

windows下解压tar.gz文件

最近做的一个项目,使用小工具代替人工提交到网站并获取结果. 在开发过程中碰到了一个问题. 网站返回的格式为tar.gz文件.第一个想到的方式是直接用第三方工具,使用的是7z.但用户那里使用的系统为win10,不以管理员身份运行会没有调用第三方工具的权限.遂决定用库解决该问题. 这里记录下windows下解压tar.gz的一些问题. 其实tar.gz是两次封装. 第一次是tar打包(这里不会压缩,文件反而会更大),第二次是gz文件的算法压缩. 解压GZ文件使用的是zlib库. 这里说一下zlib的

解决Git Bash在windows下中文乱码的问题

  下载完windows版的Git后,乱码:   这显然是不能忍受的,解决方法如下: 修改   C:\Program Files (x86)\Git\etc  我的安装目录里面的profile文件,添加一段话: alias ll='/bin/ls -alF --show-control-chars --color=tty' alias ls='/bin/ls --show-control-chars -F --color=tty'   注意,有时会提示文件被占用,但是用资源管理器又找不到到底哪个

解决 Mac 的 Terminal 中,Java 乱码的问题

在 .bash_profile 文件中,增加如下行: export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 然后,重新加载该配置 source .bash_profile 问题解决.

解决Linux下zip文件解压乱码问题

#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import zipfile #print "Processing File " + sys.argv[1] file=zipfile.ZipFile(sys.argv[1],"r"); for name in file.namelist(): utf8name=name.decode('gbk') # print "Ext

Windows解压版安装64位Apache2.4.29

安装的Apache版本: httpd-2.4.29-Win64-VC15.zip  [此版本需要Windows电脑安装VC 2015运行库](http://httpd.apache.org/docs/current/platform/windows.html#down)   (版本有可能升级) 百度网盘链接:http://pan.baidu.com/s/1c100WDy 密码:74bu   (因为我在官网上下了好久都没有下载下来,最终在其他的百度网盘找到了,在这里贴一下) 找一个目录用来存放安装

编程解决Linux下解压zip乱码问题

JDK7 的ZipInputStream新添了一个构造方法,第二个参数可以指定字符集.这样一来我们就能用这个类写一个解压程序解决zip乱码问题了. 下面是代码: package cn.fh; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.nio.charset.Charset; import

ubuntu下解压zip rar中文字符乱码的问题

如题,解压zip rar中文乱码的问i题一直困扰着我,每次都要到window系统下解压,很是不方便,今天终于把这类问题解决了.整理总结分享如下 一 .    解决 Rar 压缩文件乱码问题 Rar 压缩在 Ubuntu 下可能出现乱码,这是由于安装了 rar 软件包(开源 Rar 压缩格式解压工具), 解决方法是安装闭源的 unrar 软件包,在终端依次输入以下命令即可: sudo apt-get remove rar sudo apt-get install p7zip-full p7zip-

解决Ubuntu和Windows该文件乱码问题

1.转换文件内容编码 Windows在自然纯文本文件.当中国作为编码GBK,在Ubuntu下乱码,可以使用iconv命令转换: iconv -f gbk -t utf8 source_file > target_file 2.转换文件名称编码 Windows下压缩的zip文件,在 Ubuntu下解开时,中文文件名称会显示乱码.能够用convmv解决. 安装convmv: sudo apt-get install convmv 转换文件或文件夹: convmv -f gbk -t utf8 -r

解决Ubuntu和Windows的文件乱码问题(转载)

解决Ubuntu和Windows的文件乱码问题(debian也通用) 1.转换文件内容编码   Windows下天生的纯文本文件,其中文编码为GBK,在Ubuntu下显示为乱码,可以使用iconv命令进行转换:   iconv -f gbk -t utf8 source_file > target_file2.转换文件名编码   Windows下压缩的zip文件,在 Ubuntu下解开时,中文文件名会显示乱码,可以用convmv解决.   安装convmv:   sudo apt-get ins