那里有很多关于编码我们的问题,但我仍然无法解决我的问题。
想象一下,我在一个压缩的 ZIP 文件中有三个文件:
Übersicht.pdf
finalePräsentation
münchen
我想解压缩这些文件,所以我这样做:
with zipfile.ZipFile("path/result.zip", "r") as zip_ref:
zip_ref.extractall("/path/")
文件名看起来像废话:
我的研究表明,文件名基本上是字节串,操作系统不可能看到编码是什么。但我仍然想知道是否有任何方法可以纠正文件名的问题,以便正确显示德语“Umlaute”。
我试图改变这样的编码:
with zipfile.ZipFile(save_as, "r") as zip_ref:
print(zip_ref.namelist())
encoded_strings = [s.encode("utf-8") for s in zip_ref.namelist()]
print(encoded_strings)
zip_ref.extractall(dest)
我尝试了这个latin-1
,iso
其他一些编码和字节字符串实际上被不同地解释,但总是神秘的。因此,我问这个问题,看看是否有一种简单的方法来解决这个问题。
非常感谢提前,非常感谢帮助
编辑:locale
给我以下输出:
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
hexdump
第一个文件开头的内容如下:
0000000 25 50 44 46 2d 31 2e 34 0a 25 93 8c 8b 9e 20 52
0000010 65 70 6f 72 74 4c 61 62 20 47 65 6e 65 72 61 74
0000020 65 64 20 50 44 46 20 64 6f 63 75 6d 65 6e 74 20
0000030 68 74 74 70 3a 2f 2f 77 77 77 2e 72 65 70 6f 72
回声*.pdf | xxd | 头给了我这个:
00000000: 6669 6e61 6c65 5072 c3a4 7365 6e74 6174 finalePr..sentat
00000010: 696f 6e2e 7064 660a ion.pdf.
00000000: 6dc3 bc6e 6368 656e 2e70 6466 0a m..nchen.pdf.
00000000: c39c 6265 7273 6963 6874 2e70 6466 0a ..bersicht.pdf.