ubuntu 解压缩后文件名错误
Wrong filenames after unzipping on 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
None 工作...
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.下一步
我正在考虑查找 "ALL" 编码列表,然后提取文件名并手动检查它们。沿着这条线的东西...
while read p; do
echo "$p"
unzip -j -O $p file.zip
done <encodings.txt
结论
Windows 和 Python3 似乎有一些我无法复制的魔法。你们对这个 "MAGIC" 有什么建议吗?
- 如何识别 zip 文件的文件名编码?
- 从哪里可以获得步骤 7 的所有编码列表。
- 有没有简单的方法可以解决这个问题而不必写例如一个 python 脚本?
您提供的关键信息是 windows 上的 unrar
能够正确创建文件名。因此,除非 unrar
在幕后进行一些编码检测,否则这意味着 zip 文件中使用的编码很可能与您的 Windows 设置中使用的默认代码页相匹配。
在 Windows 上使用 chcp
你会看到你的代码页是
Active code page: 850
然后告诉 unzip
zip 文件中使用的编码是 CP850
就很简单了
unzip -O CP850 file.zip
问题
我有一个 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
None 工作...
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.下一步
我正在考虑查找 "ALL" 编码列表,然后提取文件名并手动检查它们。沿着这条线的东西...
while read p; do
echo "$p"
unzip -j -O $p file.zip
done <encodings.txt
结论
Windows 和 Python3 似乎有一些我无法复制的魔法。你们对这个 "MAGIC" 有什么建议吗?
- 如何识别 zip 文件的文件名编码?
- 从哪里可以获得步骤 7 的所有编码列表。
- 有没有简单的方法可以解决这个问题而不必写例如一个 python 脚本?
您提供的关键信息是 windows 上的 unrar
能够正确创建文件名。因此,除非 unrar
在幕后进行一些编码检测,否则这意味着 zip 文件中使用的编码很可能与您的 Windows 设置中使用的默认代码页相匹配。
在 Windows 上使用 chcp
你会看到你的代码页是
Active code page: 850
然后告诉 unzip
zip 文件中使用的编码是 CP850
unzip -O CP850 file.zip