【问题标题】:UnicodeEncodeError: 'ascii' codec can't encode character when trying a HTTP POST in PythonUnicodeEncodeError:“ascii”编解码器在 Python 中尝试 HTTP POST 时无法编码字符
【发布时间】:2011-03-07 19:25:38
【问题描述】:

我正在尝试使用 unicode 字符串 (u'\xe4\xf6\xfc') 作为 Python 中的参数执行 HTTP POST,但收到以下错误:

UnicodeEncodeError: 'ascii' 编解码器无法编码字符

这是用于制作 HTTP POST 的代码(使用 httplib2)

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

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

关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: python unicode ascii http-post


    【解决方案1】:

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

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

    【讨论】:

    • 之前的编码有一些问题,但后来我内联了。像这样: userInfo = [('Name', u'\xe4\xf6\xfc'.encode('utf-8'))] 无论如何感谢您的快速响应
    • 这篇文章的问题非常相似,stackoverflow.com/questions/1652904/…
    • 如果 httplib2 和 httplib 的文档中提到了这个约束,那将会很有帮助。
    猜你喜欢
    • 2015-10-21
    • 2010-12-11
    • 2012-07-02
    • 2010-12-11
    • 2019-09-01
    • 2018-05-06
    • 2021-09-28
    相关资源
    最近更新 更多