我有这个myfile(我已经粘贴了,我希望有问题的相关数据在复制/粘贴中幸存下来).我尝试用以下内容读取该文件:
import codecs
codecs.open('myfile', 'r', 'utf-8').read()
Run Code Online (Sandbox Code Playgroud)
但这给了:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe5 in position 7128: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)
如果我检查文件:
» file myfile
myfile: C source, ISO-8859 text
Run Code Online (Sandbox Code Playgroud)
很多时候我正在处理我没有生成的文件(系统文件,从互联网上下载的随机文件,供应商,客户提供的随机文件......):这些文件没有提供编码的线索他们正在使用.在多文化环境(欧洲)中,很难知道这些文件是如何编码的.大多数时候,即使是提供文件的人也没有关于编码的线索,这可以通过选择的编辑器/工具在幕后发生.如何确定所使用的编码,逐个文件?
Dav*_*ang 15
使用python 3.3,您可以使用内置的open函数
open("myfile",encoding="ISO-8859-1")
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 13
您更改了open()命令中的编解码器; ISO-8859标准有多个编解码器,我在这里为你选择了Latin-1,但你可能需要选择另一个:
codecs.open('myfile', 'r', 'iso-8859-1').read()
Run Code Online (Sandbox Code Playgroud)
有关有效编解码器的列表,请参阅codecs模块.根据pastie数据判断,iso-8859-1是正确使用的编解码器,因为它适用于斯堪的纳维亚文本.
通常,如果没有其他来源,您无法知道文件使用的编解码器.充其量,你可以猜测(这是什么file).
| 归档时间: |
|
| 查看次数: |
10799 次 |
| 最近记录: |