Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Github API不接受JSON格式的Unicode字符_Python_Python 2.7_Unicode_Github Api - Fatal编程技术网

Python Github API不接受JSON格式的Unicode字符

Python Github API不接受JSON格式的Unicode字符,python,python-2.7,unicode,github-api,Python,Python 2.7,Unicode,Github Api,当我读取Unicode字符文件并尝试通过API为发生的异常创建Github问题时,会发生异常: Traceback (most recent call last): File "./item.py", line 320, in <module> auto_issue(opt.hashToCrack, e, e.message) File "/home/baal/bin/python/settings.py", line 480, in auto_issue _

当我读取Unicode字符文件并尝试通过API为发生的异常创建Github问题时,会发生异常:

Traceback (most recent call last):
  File "./item.py", line 320, in <module>
    auto_issue(opt.hashToCrack, e, e.message)
  File "/home/baal/bin/python/settings.py", line 480, in auto_issue
    _failure(issue, hashed_string, error)
  File "/home/baal/bin/python/github/create_issue.py", line 109, in _failure
    urllib2.urlopen(req).read()
  File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 435, in open
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 548, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 473, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 556, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 422: Unprocessable Entity
回溯(最近一次呼叫最后一次):
文件“/item.py”,第320行,在
自动发布(opt.hashToCrack,e,e.message)
文件“/home/baal/bin/python/settings.py”,第480行,自动发布
_失败(问题、哈希字符串、错误)
文件“/home/baal/bin/python/github/create_issue.py”,第109行,输入失败
urlib2.urlopen(req.read)()
文件“/usr/lib/python2.7/urllib2.py”,第154行,在urlopen中
返回opener.open(url、数据、超时)
文件“/usr/lib/python2.7/urllib2.py”,第435行,打开
响应=方法(请求,响应)
http_响应中的文件“/usr/lib/python2.7/urllib2.py”,第548行
“http”、请求、响应、代码、消息、hdrs)
文件“/usr/lib/python2.7/urllib2.py”,第473行出错
返回自我。调用链(*args)
文件“/usr/lib/python2.7/urllib2.py”,第407行,在调用链中
结果=func(*args)
文件“/usr/lib/python2.7/urllib2.py”,第556行,默认为http\u error\u
raise HTTPError(请求获取完整url(),代码,消息,hdrs,fp)
urllib2.HTTPError:HTTP错误422:不可处理的实体
我做了一些研究,得出结论,当异常信息中有Unicode字符时,就会发生这种情况。我如何创建Github问题如下:

def _failure(issue, hashed_string, error):

    def __create_issue_ext():
        retval = []
        for _ in range(5):
            retval.append(random.choice(string.ascii_letters))
        return ''.join(retval)

    issue_title = "Unhandled Exception {}({})".format(issue, __create_issue_ext())
    issue_data = {
        "title": issue_title,
        "body": open("{}/lib/github/issue_template".format(os.getcwd())).read().format(
            type(error).__name__, (error.args, error.message), platform.platform(),
            hashed_string, sys.argv
        )
    }
    req = urllib2.Request(
        url="https://api.github.com/repos/<name>/<project>/issues", data=json.dumps(issue_data),
        headers={"Authorization": "token {}".format(__handle(__get_encoded_string()))})

    urllib2.urlopen(req).read()
    lib.settings.LOGGER.info(
        "Your issue has been created with the title '{}'.".format(
            issue_title
        )
    )
def_失败(问题、哈希字符串、错误):
定义创建问题扩展()
retval=[]
对于范围(5)内的uu:
retval.append(random.choice(string.ascii_字母))
返回“”。加入(retval)
issue\u title=“未处理的异常{}({})”。格式(issue,\uuuu create\uissue\uext())
问题_数据={
“标题”:问题标题,
“body”:打开(“{}/lib/github/issue_template”。format(os.getcwd())。read()。format(
键入(错误)。\uuuuuuuuuuuuuuuuu名称(error.args,error.message),platform.platform(),
哈希_字符串,sys.argv
)
}
req=urllib2.请求(
url=”https://api.github.com/repos///issues,data=json.dumps(发布数据),
headers={“Authorization”:“token{}.format(uuu handle(uu get_encoded_string()))})
urlib2.urlopen(req.read)()
lib.settings.LOGGER.info(
“已创建标题为“{}”的问题。格式。”(
发行名称
)
)

现在,只要异常字符串中没有Unicode字符,就可以了。所以我的问题是,有没有一种方法可以让Unicode转换成JSON格式,或者在将Unicode字符的异常字符串添加到JSON格式之前去掉它?

是否可以在python 3+上运行脚本?处理unicode的大多数问题在python 3中都得到了解决。@Poonacha Nope only 2.7.x根据您应该
urllib.urlencode
您的数据。是否可以在python 3+上运行您的脚本?处理unicode的大多数问题在python 3中都得到了解决。@Poonacha Nope only 2.7.x根据您应该
urllib.urlencode
您的数据。