Возможно urllib.unquote
- это то, что вы ищете:
>>> from urllib import unquote
>>> unquote("%DD%F2%EE%20%F2%E5%F1%F2")
Это дает вам строку, в которой символы находятся в любой кодировке, которую вы использовали в URL.Если вы хотите перекодировать его в другую кодировку (скажем, UTF-8), вы должны сначала создать объект unicode
, а затем использовать метод encode
объекта unicode
для его перекодирования:
>>> from urllib import unquote, quote
>>> import json, urllib2, pprint
>>> decoded = unicode(unquote("%DD%F2%EE%20%F2%E5%F1%F2"), "windows-1251")
>>> print decoded
Это тест
>>> recoded = decoded.encode("utf-8")
На данный момент у нас есть строка в кодировке UTF-8, но она по-прежнему не подходит для передачи в API определения языка Google:
>>> recoded
'\xd0\xad\xd1\x82\xd0\xbe \xd1\x82\xd0\xb5\xd1\x81\xd1\x82'
Поскольку вы хотите включить этострока в URL-адресе в качестве аргумента запроса, вы должны закодировать ее, используя urllib.quote
:
>>> url = "http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=%s" % quote(recoded)
>>> data = json.loads(urllib2.urlopen(url).read())
>>> pprint.pprint(data)
{u'responseData': {u'confidence': 0.094033934,
u'isReliable': False,
u'language': u'ru'},
u'responseDetails': None,
u'responseStatus': 200}