windows - 在 ubuntu 上解压后文件名错误
问题描述
问题
我有一个 zip 文件,我想用正确的文件名在 Ubuntu 上解压缩(它们包含æ、ø、å)。
我试过的:
1. 在 Windows 10 中解压缩 - 工作!
一切都按预期工作,文件名正确。
2.在Ubuntu中解压
unzip file.zip
文件名中缺少字符 æ、ø 和 å,其中“æ”已替换为“C”。
我试图检测 zip 文件的编码,但它似乎没有告诉我任何信息。
file file.zip
3.在Ubuntu中使用编码解压
我尝试使用通常用于包含æ、ø、å 的文本的各种编码来解压文件。
unzip -O UTF-8 file.zip
unzip -O ISO-8859-1 file.zip
unzip -O windows-1257 file.zip
没有工作...
4.在Ubuntu中使用7zip解压
建议 7zip 可以解决这个问题,但没有..
7z x file.zip
5. 在 Ubuntu 中使用 7zip 和丹麦语设置解压
建议我更改ubuntu语言设置,然后重试。
saveLang=$LANG
export LANG=da_DK
7z x file.zip
export LANG=$saveLang
这也行不通。
6. 在 Ubuntu 中使用 Python3 解压 - 工作!
如果我为此目的使用 Python3,解压缩可以正常工作,但必须有更简单的方法吗?
import zipfile
with zipfile.ZipFile('file.zip', "r") as z:
z.extractall("/home/xxxx/")
7. 下一步
我正在考虑查找“所有”编码列表,然后仅提取文件名并手动浏览它们。类似的东西...
while read p; do
echo "$p"
unzip -j -O $p file.zip
done <encodings.txt
结论
Windows 和 Python3 似乎有一些我无法复制的魔法。你们对这个“魔法”是什么有什么建议吗?
- 如何识别 zip 文件的文件名的编码?
- 我在哪里可以获得第 7 步的所有编码列表。
- 有没有什么简单的方法可以解决这个问题而无需编写例如 python 脚本?
解决方案
您提供的关键信息是unrar
在 Windows 上能够正确创建文件名。因此,除非unrar
在后台进行一些编码检测,否则这意味着 zip 文件中使用的编码很有可能与 Windows 设置中使用的默认代码页相匹配。
在 Windows 上使用chcp
,您会看到您的代码页是
Active code page: 850
unzip
然后,告诉zip 文件中使用的编码是一个简单的问题CP850
unzip -O CP850 file.zip
推荐阅读
- android - 活动识别客户端电池消耗
- visual-studio-code - 如何设置侧边栏的特定宽度
- java - 将字符串从 JavaEE 后端推送到 Javascript 客户端的任何简单方法?
- ios - 异步加载本地 JSON 文件
- apache-nifi - 应该结合哪些处理器来处理 NiFi 中的大型 JSON 文件?
- java - Spring Kafka 并发与 spring-integration
- azure - Azure 专用 DNS 区域解析
- azure-functions - Azure 函数和 Web 作业或 Azure 函数与 Web 作业之间的区别
- .net - 如何执行使用 Framework 2 构建的应用程序并使用 TLS 1.2 以 3.5.1 运行,而无需重新构建应用程序
- sql-server-2008 - 如何在 HTML 电子邮件中设置标题