2010-06-24 55 views
10

我正在尝试使用unicode字符串(u'\ xe4 \ xf6 \ xfc')作为Python中的参数的,但我收到以下错误:UnicodeEncodeError:在Python中尝试HTTP POST时'ascii'编解码器无法编码字符

UnicodeEncodeError: 'ASCII' 编解码器无法编码的字符

这是

http = httplib2.Http() 
userInfo = [('Name', u'\xe4\xf6\xfc')] 
data = urlencode(userInfo) 

resp, content = http.request(url, 'POST', body=data) 

任何用来使HTTP POST(与httplib2的)代码如何解决这个问题的想法?

回答

13

您不能直接发送Python Unicode对象。您应该首先将其编码为UTF-8字符串:

name = u'\xe4\xf6\xfc'.encode('utf-8') 
userInfo = [('Name', name)] 
+0

先前编码有问题,但后来我做了内联。像这样: userInfo = [('Name',u'\ xe4 \ xf6 \ xfc'.encode('utf-8'))] 无论如何感谢您的快速回复 – David 2010-06-24 13:25:24

+0

这篇文章非常类似的问题, http://stackoverflow.com/questions/1652904/easy-q-unicodeencodeerror-ascii-codec-cant-encode-character – shahjapan 2010-06-26 16:33:53

+1

如果httplib2和httplib的文档提到了这个约束,那将会很有帮助。 – chernevik 2011-12-16 18:15:39

相关问题