![在 Windows 上解压后文件名编码被破坏](https://linux22.com/image/1385209/%E5%9C%A8%20Windows%20%E4%B8%8A%E8%A7%A3%E5%8E%8B%E5%90%8E%E6%96%87%E4%BB%B6%E5%90%8D%E7%BC%96%E7%A0%81%E8%A2%AB%E7%A0%B4%E5%9D%8F.png)
我压缩了 Linux 服务器上的一个目录。目录中的许多文件的文件名中都有德语变音符号。文件系统为 ext3,系统区域设置为 de_DE.utf8。
我使用以下命令创建 zip 文件:
zip -r somezip.zip somefolder/
我通过 WinSCP 将此文件传输到我的 Windows 笔记本电脑并解压缩。问题:所有带有德语变音符号的文件名都坏了。在我的 Linux 服务器上,文件名显示正确。
我认为我在创建 zip 文件时犯了一个错误。
有人知道当我在 Linux 上使用 zip 命令压缩文件时如何保留正确的文件名编码吗?
答案1
这可能是由于您的 Windows 配置为 latin-1 编码造成的。
我认为解决这个问题的最简单方法是暂时将您的语言环境设置为 iso-8859-15,然后再次运行 zip:
export LC_ALL=de_DE.iso885915
locale # Check that the locale was applied
zip -r somezip.zip somefolder/
export LC_ALL=de_DE.utf8 # Restore
如果由于没有安装语言环境而导致第一步失败,则可以使用以下命令进行设置:
sudo locale-gen de_DE.iso885915