![在 Windows 1251(西里尔文)编码中正确查看 ZIP 文件中的文件名](https://linux22.com/image/1288259/%E5%9C%A8%20Windows%201251%EF%BC%88%E8%A5%BF%E9%87%8C%E5%B0%94%E6%96%87%EF%BC%89%E7%BC%96%E7%A0%81%E4%B8%AD%E6%AD%A3%E7%A1%AE%E6%9F%A5%E7%9C%8B%20ZIP%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D.png)
我有一个 zip 文件,根据其创建者的说法,其中的目录和文件名(数千个文件)采用 Windows 1251 编码。即文件名包含俄语或西里尔字母。我的 Windows XP SP3 无法正确显示它们
ÅÑaÑó«ñd
而不是АБВГДЕЖ
(我只显示俄语字母表的前 7 个字母,2 个序列不相关)。
可以在操作系统级别上做任何事情来正确显示它们,或者是否有脚本可以重命名或复制所有目录和文件?
事实上,我对保留文件内容原样没有任何问题,因为它们实际上是 Windows 1251 编码的卡拉 OK 文件 (.kar) 和歌词,但我想知道为什么文件名会出现奇怪的变化。
答案1
ZIP 格式对文件名中的非英文字符的支持较弱。因此,可能存在不兼容的实现。您看到的影响不是核心操作系统级别,而是 Windows Shell(Explorer)中 ZIP 格式支持的问题。其他 ZIP 程序(例如 7Zip)可能对此支持得更好。
答案2
Zip 创建不受我控制,我使用 Winrar 来解压。就我而言,解决方案是在系统级别。
- 在控制面板中打开区域和语言选项。
- 在“高级”选项卡上的“非 Unicode 程序的语言”下,单击将使用的非 Unicode 程序的语言版本。
我将其设置为俄语。我怀疑像 Winrar 这样广泛使用的程序是否可以归类为非 Unicode,尽管如此
重启后,Winrar 开始正确显示文件名,并且解压后的文件在 Windows 资源管理器中正确显示。