human_curl icon indicating copy to clipboard operation
human_curl copied to clipboard

unicode support

Open imbolc opened this issue 13 years ago • 3 comments
trafficstars

>>> import requests
>>> requests.get(u'http://google.com/')
<Response [200]>
>>> import human_curl as requests
>>> requests.get(u'http://google.com/')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/human_curl/methods.py", line 93, in get
    return request("GET", url, **kwargs)
  File "/usr/local/lib/python2.6/dist-packages/human_curl/methods.py", line 76, in request
    r.send()
  File "/usr/local/lib/python2.6/dist-packages/human_curl/core.py", line 312, in send
    opener, body_output, headers_output = self.build_opener(self._build_url())
  File "/usr/local/lib/python2.6/dist-packages/human_curl/core.py", line 348, in build_opener
    opener.setopt(pycurl.URL, url)
TypeError: invalid arguments to setopt

То же самое при передаче юникода в params и т.п.

imbolc avatar Apr 27 '12 09:04 imbolc

Надо подумать над решением. Проблема в том, что pycurl (сишная часть) не понимает тип unicode питона. Поэтому надо декодить в обычный стринг, что не всегда возможно.

Lispython avatar Apr 30 '12 17:04 Lispython

Можно у requests посмотреть. Оно ж и urllib не работает с юникодом:

>>> urllib.quote(u'тест')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/urllib.py", line 1224, in quote
    res = map(safe_map.__getitem__, s)
KeyError: u'\u0442'

У них даже response.text есть, который юникод возвращает. Они chardet используют и аттрибут encoding есть.

imbolc avatar May 01 '12 04:05 imbolc

I don't understand a word from your conversation, but the library is almost for no use without the unicode support. It raises exceptions over and over just because my url, data, proxy, or whatever else parameters are in unicode strings - does not matter they actually contain only ASCII. This is a deal-breaker.

honzajavorek avatar Sep 16 '13 10:09 honzajavorek