【发布时间】:2012-05-24 04:06:15
【问题描述】:
我正在使用 python 读取一个文本文件,其中包含下面的段
(由于我是菜鸟,所以无法发布屏幕截图)但这就是记事本++中的样子:
NULSOHSOHNULNULNULSUBMesssage-ID:
错误:
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
print(f.readline())
File "C:\Python32\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 7673: character maps to <undefined>
以二进制形式打开文件:
f = open('file.txt','rb')
f.readline()
给我二进制的文本
b'\x00\x01\x01\x00\x00\x00\x1a\xb7Message-ID:
但是我如何获得 ascii 格式的文本?处理这个的最简单/pythonic的方法是什么?
【问题讨论】:
-
它不是一个文本文件,所以你不能指望这样阅读它。
-
问题不在于
NUL,而在于其他一些符号。 ASCII 编解码器对 ascii 控制字符没有任何问题。 -
问题在于“位置 7673 中的字节 0x8f”,而不是“位置 1 中的字节 0x00”。也就是说,你的 NUL 不是问题。
标签: python ascii binary-data filereader non-ascii-characters