Python 不一致的文件行为

Python 不一致的文件行为,python,unicode,file-encodings,Python,Unicode,File Encodings,我试图在以下日志行中跟踪Python UnicodeDecodeError: 10.210.141.123 - - [09/Nov/2011:14:41:04 -0800] "gfR\x15¢\x09ì|Äbk\x0F[×ÐÖà\x11CEÐÌy\x5C¿DÌj\x08Ï ®At\x07å!;f>\x08éPW¤\x1C\x02ö*6+\x5C\x15{,ªIkCRA\x22 xþP9â\x13h\x01­¢è´\x1DzõWiË\x5C\x10sòʨR)¶²\x1F8äl¾¢{ÆNw\

我试图在以下日志行中跟踪Python UnicodeDecodeError:

10.210.141.123 - - [09/Nov/2011:14:41:04 -0800] "gfR\x15¢\x09ì|Äbk\x0F[×ÐÖà\x11CEÐÌy\x5C¿DÌj\x08Ï ®At\x07å!;f>\x08éPW¤\x1C\x02ö*6+\x5C\x15{,ªIkCRA\x22 xþP9â\x13h\x01­¢è´\x1DzõWiË\x5C\x10sòʨR)¶²\x1F8äl¾¢{ÆNw\x08÷@ï" 400 166 0.000 "-" "-"
我在Vim中打开了整个日志文件,然后将该行拉入一个新文件,以便只测试一行。但是,我的解析脚本可以与新文件一起工作——它不会抛出UnicodeDecodeError。我不明白为什么一个文件会产生错误,而另一个文件不会,当它们(表面上)相同时

以下是我尝试过的:运行
enca
来确定文件编码,它抱怨
无法确定(或理解)您的语言偏好。
file-I
表示这两个文件都是
常规文件。我还删除了原始日志文件中的每一行,但仍然在一个文件中得到错误,而在另一个文件中没有错误。我试着删除

set encoding=utf-8 
从我的.vimrc中,再次写入该文件,我仍然在一个文件中得到错误,而在另一个文件中没有

这些日志是nginx日志。Nginx在其发行说明中有此说明:

*) Change: now the 0x00-0x1F, '"' and '\' characters are escaped as \xXX
   in an access_log.
   Thanks to Maxim Dounin.
我的Python脚本有
,open('log_file')为f
,当我试图在dict上调用
json.dumps
时会出现错误


我怎样才能找到它?

你的问题:我怎样才能找到它

答复:

(1) 向我们显示您收到的错误消息的全文--在不知道您试图使用的编码的情况下,我们无法告诉您任何信息。回溯和读取文件并再现错误的代码片段也很方便

(2) 编写一个微小的Python脚本以查找文件中的行,然后执行以下操作:

print repr(the_line) # Python 2.X
print ascii(the_line) # Python 3.x
并将结果复制/粘贴到问题的编辑中,以便我们可以清楚地看到行中的内容


(3) 除了
­但请告诉我们您是否希望该行是文本(如果是,用哪种人类语言?)

如果您从本文中复制该行,是否会出现错误?