【问题标题】:Http POST Accents encodingHttp POST 口音编码
【发布时间】:2014-09-22 00:51:43
【问题描述】:

我有一个编码问题: 当我在 Web 浏览器的输入中键入字符“é”时,它被发布为 %E9,并且工作正常。 另一方面,当我尝试使用 Python 和 requests 库发布请求时,它以 %C3%A9 的形式发送。

我该如何解决这个问题?

这是不起作用的代码

requests.post("http://localhost", message = {"text":'é'})

谢谢

【问题讨论】:

标签: python http urlencode


【解决方案1】:

%C3%A9 是 utf-8 编码字符串的 url 编码版本:

>>> u'é'.encode('utf-8')
'\xc3\xa9'
>>> urllib.quote(u'é'.encode('utf-8'))
'%C3%A9'

使用latin-1 编码(或类似)显式编码字符串:

>>> u'é'.encode('latin1')
'\xe9'
>>> urllib.quote(u'é'.encode('latin-1'))
'%E9'

requests.post("http://localhost", message={"text": u'é'.encode('latin-1')})

【讨论】:

  • 酷。我从来没有使用过python,所以我花了一点时间来筛选它。我知道它是 unicode,但不知道该怎么做才能为询问的人转换。谢谢。
  • 感谢您的解决方案!只是为了记录,最后一行只是 requests.post("localhost", {"text": u'é'.encode('latin-1')}),没有关键字message
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
  • 1970-01-01
  • 2011-12-21
  • 2012-07-06
  • 1970-01-01
  • 2010-10-17
相关资源
最近更新 更多