使用 Win7 的“发送到 > 压缩(压缩)文件夹”压缩名称中包含 unicode 字符的文件时出错

use*_*322 18 zip windows-7

当我尝试压缩名称中包含 unicode 字符(例如 © 或 ™)的文件时,出现以下错误:

[窗口标题] 压缩(zipped)文件夹错误

[内容] 'C:\Asd™.txt' 无法压缩,因为它包含无法在压缩文件夹中使用的字符,例如 ™。您应该重命名此文件或目录。

[好的]

这仅在我重新安装 Windows 7 时才成为问题。我可能从这个错误中获得了一些必要的资源来自动解决,但现在几乎是全新安装,我无法压缩文件。我该如何解决?

UPD:自从我发布这个问题以来已经过了一段时间,我安装了一些我常用的应用程序,但问题仍然存在,我不确定是否可以通过安装以前的某些特定应用程序来修复它。


正如对此问题的评论中所报告的那样,Windows 10 的内置压缩可能没有这个问题

Kar*_*ran 18

如果有问题的字符来自非英语但 Microsoft 支持的语言,您可以从 Windows Update安装相关的MUI(多语言用户界面)语言包,或从此处安装相关的LIP(语言界面包)作为可能的修复。

除上述内容外,您可能还需要更改System Locale

系统区域设置确定用于在不使用 Unicode 的程序中输入和显示信息的默认字符集(字母、符号和数字)和字体。这允许非 Unicode 程序使用指定的语言在您的计算机上运行。在计算机上安装其他显示语言时,您可能需要更改默认系统区域设置。为系统区域设置选择不同的语言不会影响 Windows 或其他使用 Unicode 的程序的菜单和对话框中的语言。

这样做:

  1. 在开始菜单搜索框中输入“region”(不带引号)

  2. 打开区域和语言控制面板小程序

  3. 单击管理选项卡,然后在非 Unicode 程序的语言下单击更改系统区域设置。如果系统提示您输入管理员密码或确认,请键入密码或提供确认。

  4. 选择语言,然后单击“确定”。

  5. 如果系统提示您重新启动计算机,请单击立即重新启动以执行此操作。

    Win7 更改系统区域设置


但是,如果有问题的字符是像如上面提到的,我不相信有任何微软官方定为这zipfldr.dll限制,因为Windows已经有了这个功能(即已经存在,只要所以如果你真的做了修复它更早,可能你安装了一些第三方组件)。来自维基百科

自 Plus! 以来,Microsoft Windows 的版本都支持资源管理器中的 zip 压缩!pack 是为 Windows 98 发布的。Microsoft 将此功能称为“压缩文件夹”。Windows 压缩文件夹功能并不支持所有 zip 功能。例如,Windows XP 或更高版本中的压缩文件夹功能无法读取或写入AES 加密、拆分或跨区存档以及Unicode 条目编码

ZIP文件格式缺乏Unicde支持很长一段时间,而这个扩展仅仅增加6年前每2006年作为附录d -语言编码(EFS)的的ZIP文件格式规范

D.1 ZIP 格式历来仅支持原始 IBM PC 字符编码集,通常称为 IBM Code Page 437。这将文件名字符限制为仅存储在原始 MS-DOS 值范围内的字符,并且不能正确支持其他字符编码或语言的文件名。为解决此限制,本规范将支持以下更改。[阅读文档以了解其余内容。]

从那时起,当然所有实现该格式的主要 Windows 存档器都已更新以包含 Unicode 支持,我相信从 2008 年的 WinZip 开始。不幸的是,微软出于某种奇怪的原因为其压缩文件夹功能授权了第三方库(尽管它不是编码 ZIP 支持非常困难),显然这个库早于将 Unicode 添加到 ZIP 文件格式。此外,由于它到底有多少关心此功能的明显标志,微软还没有更新的代码来修复这个bug直到日期(显然,即使是新System.IO.ZipArchive在.Net框架,即最新版本类4.5 最初没有做到这一点,但此错误已被修复)。我猜他们希望每个人都安装可用的众多全功能第三方存档器之一,这正是我在上面向您推荐的。

您可以在 Microsoft 的Michael Kaplan的以下系列博客文章中阅读有关 Windows 中这种特殊缺乏 Unicode 支持的肮脏细节:


PS“我刚刚发现使用 Windows 的“发送到”压缩与 Winrar 的“最佳”压缩效果一样好,但速度要快得多。” - 我刚刚对此进行了多次测试。除了打开 WinRAR 的添加到存档所花费的额外时间对话框中,选择 ZIP 作为存档格式并按 OK,两者的实际压缩时间大致相同,WinRAR 的时间一般较短(尽管差异可以忽略不计)。如果您看到了巨大的差异,那只能是您首先在一组文件上测试 WinRAR,然后立即使用 Compressed Folders 压缩相同的文件。自然,第二次 Windows 已经缓存了数据,所以这个过程只用了最初的一小部分时间。在当前 Windows 会话期间您没有接触过的一组文件上以相反的顺序执行此操作,我敢打赌结果将相反。:)

至于最终的压缩大小,根据存档文件格式的数据/组合,我发现两者中的任何一个都做得更好(尽管差异也可以忽略不计)。当然,7z 或 Rar(或什至 WinZip 的 ZipX)格式在这方面好得多,几乎在任何一天都会击败普通的 ol' ZIP(即使用传统/遗留放气算法而不是PPMd等的ZIP )。