VirusTotal错误:UnicodeDecodeError:' ascii'编解码器不能解码位置0中的字节0xff:序数不在范围内(128)

时间:2015-06-16 14:44:54

标签: python

我有一个使用VirusTotal Api 2.0的python 2.7脚本(更多信息:https://www.virustotal.com/es/documentation/public-api/#scanning-files)当我尝试扫描某些文件时,它有时没有问题,但其他文件引发了这个错误:

Traceback (most recent call last):
  File "F:/devPy/myProjects/script_vt.py", line 138, in <module>
    scanMyFile()
  File "F:/devPy/myProjects/script_vt.py", line 75, in scanQueue
    jsonScan = scanAFile(fileToScan)
  File "F:/devPy/myProjects/script_vt.py", line 37, in scanAFile
    json = postfile.post_multipart(host, selector, fields, files)
  File "F:\devPy\myProjects\script_vt.py", line 10, in post_multipart
    content_type, body = encode_multipart_formdata(fields, files)
  File "F:\devPy\myProjects\script_vt.py", line 42, in encode_multipart_formdata
    body = CRLF.join(L)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)

这是引发错误的地方。:

def scanAFile(fileToScan):
    host = "www.virustotal.com"
    selector = "https://www.virustotal.com/vtapi/v2/file/scan"
    fields = [("apikey", myPublicKey)]
    file_to_send = open(fileToScan, "rb").read()
    files = [("file", fileToScan, file_to_send)]
    json = postfile.post_multipart(host, selector, fields, files)

    return simplejson.loads(json)

我在StackOverflow上阅读了很多类似的问题,但没有一个能为我工作。 我在Windows下使用pycharm。

1 个答案:

答案 0 :(得分:0)

似乎问题是由于unicode代码数据。将默认编码设置为UTF-8可能会解决问题。

在脚本顶部添加以下行。

import sys
reload(sys)
sys.setdefaultencoding('utf8')