mac, linux, windows的文件系统都用什么编码保存和读取文件名?

提出这个问题主要是由于最近遇到了windows和mac的压缩文件互传并解压后遇到的中文乱码问题。我经过一些测试,观察到的现象是:
=============================================
本问题只讨论文件名的编码问题,不涉及文件内容的编码问题
=============================================
1. windows下保存的以中文命名的文件,在mac上能正确显示,反之亦然。(说明windows和mac都是用的统一编码处理文件名,可能是UTF8或UTF16吧)
2. 在windows下用7zip用zip格式压缩中文命名的文件,在mac上用默认的archive utlitiy解压,文件名显示为乱码。用The Unarchiver选择文件名编码为GBK进行解压,文件明显示正常。(说明windows下zip格式的压缩文件名使用GBK编码,mac默认的archive utility应该是UTF8吧)
3. 在windows下用7zip用7z格式压缩中文命名的文件,7z格式在mac上用The Unarchiver选择文件名编码为GBK或者UTF8进行解压,文件都能正常解压(说明7z格式在windows和mac下压缩文件名都是统一编码的,可能是UTF8或者UTF16吧)

根据以上三点得到的结论就是不涉及压缩时windows,mac之间传输文件完全没有乱码的问题;用7z压缩时也没有乱码问题。
---------------------------------------------------------------------------------------------
疑问:但是为什么zip格式压缩时windows和mac却会用不同的编码处理文件名呢?
vczh 《C++Primer 5th》强势审校

加入知乎

与世界分享你的知识、经验和见解

验证码
已有帐号?
28 人关注该问题