7sDream / torrent_parser

A .torrent file parser and creator for both Python 2 and 3

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

UnicodeDecodeError: 'utf8' codec can't decode byte 0xb5 in position 1: invalid start byte

SunnyFenng opened this issue · comments

使用pytp 解析文件的使用报编码错误,完整报错如下:
Traceback (most recent call last):
File "/usr/local/bin/pytp", line 11, in
sys.exit(__main())
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 252, in __main
data = TorrentFileParser(target_file, not args.dict).parse()
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 87, in parse
data = self._next_element()
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 202, in _next_element
element = self._type_to_func(element_type)()
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 138, in _next_dict
for key, element in self._dict_items_generator():
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 131, in _dict_items_generator
v = self._next_element()
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 202, in _next_element
element = self._type_to_func(element_type)()
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 138, in _next_dict
for key, element in self._dict_items_generator():
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 131, in _dict_items_generator
v = self._next_element()
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 202, in _next_element
element = self._type_to_func(element_type)()
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 151, in _next_list
return [element for element in self._list_items_generator()]
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 145, in _list_items_generator
element = self._next_element()
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 202, in _next_element
element = self._type_to_func(element_type)()
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 138, in _next_dict
for key, element in self._dict_items_generator():
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 131, in _dict_items_generator
v = self._next_element()
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 202, in _next_element
element = self._type_to_func(element_type)()
File "/usr/local/lib/python2.7/dist-packages/torrent_parser.py", line 168, in _next_string
string = raw.decode(self._encoding)
File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)

在centos 7环境下,Python版本为2.7, 打断点调试发现,报错时raw = '\x0e\xb5\xc1\x91\xfb\x83m\xae\xfb8f\x05\x13\xb0\x8bo'

@SunnyFenng

请提供一下完整的版本号,2.7 的小版本也有一些细小的不同。

如果可能的话能否提供一下出错的 torrent 文件方便调试?

Thx。

@SunnyFenng

问题已找到,是一个将 hash 值误用 string 方式 decode 导致的解码错误。

0.1.1 版本已修复此问题。

“NameError: global name 'FileNotFoundError' is not defined”!还是会报错,在python2.7, 里没有filenotfoundError, 只能用IOError

@SunnyFenng

这个问题确认解决了的话我就关了。

FileNotFoundError 的问题我新开了一个 Issue #2