我正在尝试在以下日志行中追踪 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
以确定文件编码,它抱怨Cannot determine (or understand) your language preferences.
file -i
说这两个文件都是Regular file
s。我还删除了原始日志文件中的每一行,但一个文件中仍然出现错误,另一个文件中没有错误。我尝试删除
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 脚本有with open('log_file') as f
,当我尝试调用json.dumps
dict 时出现错误。
我怎样才能找到这个?