A-P*_*lgy 0 python unicode zipfile
我有一个具有Unicode名称的文件,比方说'????.txt'.我想打包他,我正在使用python的zipfile.
我可以压缩文件并稍后打开它们,但是当使用Windows 7文件浏览器查看文件时,文件名会搞乱(7zip工作得很好).
根据文档,这是一个常见的问题,并且有如何处理的说明:
来自ZipFile.write
注意
ZIP文件没有正式的文件名编码.如果您有unicode文件名,则必须将它们转换为所需编码的字节字符串,然后再将它们传递给write().WinZip将所有文件名解释为CP437中编码的文件名,也称为DOS Latin.
对不起,但我似乎无法得到我应该用文件名做什么.我试过.encode('CP437'),.decode('CP437')..
您必须将Unicode字符串编码为CP437.但是,您无法对特定示例进行编码,因为CP437编解码器不支持希伯来语:
>>> u'????.txt'.encode('cp437')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/encodings/cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-3: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)
上述错误告诉您前4个字符(????)无法编码,因为目标字符集中没有此类字符.CP437仅支持西方字母(AZ,ç和é等重音字符),IBM线条图(如╚和┤)和一些希腊符号,主要用于数学方程(如Σ和φ).
你要么必须生成一个只使用CP437编解码器支持的字符的不同文件名,要么生活在WinZip永远无法正确显示希伯来文件名的情况下,并且只需坚持使用7zip为你工作的字符集.
| 归档时间: |
|
| 查看次数: |
2146 次 |
| 最近记录: |