Can the header field of requests.post be a unicode object?
我正在使用python请求2.2.1,并尝试使用自定义标头发布请求。
我正在创建自己的标题
1 | myheader = {'name' : myvalue } |
事情是
当我这样做时:
1 | r = requests.post(myhost, headers=myheader) |
我得到一个例外:
1 | UnicodeEncodeError: 'ascii' codec can't encode characters in position 17-18: ordinal not in range(128) |
而且我想在将它放入
标题不是unicode数据,不是。 它们不是POST主体的一部分(根据需要为您编码,否则可以包含任何二进制数据)。
绝大多数HTTP标头编码的信息无论如何都只需要ASCII字符集。 例如,
通常认为HTTP标头也可能包含Latin-1(ISO-8859-1)字符(因此最多为Unicode U + 00FF); 特别是HTTP 1.1警告标头规范使用Latin-1作为默认值。 如果需要在Latin-1范围之外的标头中编码文本,请对RFC 2047之后的文本进行编码。在Python中,您可以使用
1 2 3 | from email.header import Header myheader = {'name': str(Header(u'Some unicode value', 'utf-8'))} |