Python 不一致的文件行为
我试图在以下日志行中跟踪Python UnicodeDecodeError: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\
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) 除了­代码>但请告诉我们您是否希望该行是文本(如果是,用哪种人类语言?)如果您从本文中复制该行,是否会出现错误?