Я пытаюсь разобраться с unicode в python 2.7.2. Я знаю, что есть .encode('utf-8')
вещь, но 1/2 времени, когда я добавляю ее, я получаю ошибки, и 1/2, когда я не добавляю ее, я получаю ошибки.
Есть ли способ рассказать python - что я думал, был современным и современным языком, чтобы просто использовать unicode для строк, а не заставлять меня перемещаться с помощью материалов .encode('utf-8')
?
Я знаю... python 3.0 должен это делать, но я не могу использовать 3.0 и 2.7, все равно не все так...
Например:
url = "http://en.wikipedia.org//w/api.php?action=query&list=search&format=json&srlimit=" + str(items) + "&srsearch=" + urllib2.quote(title.encode('utf-8'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 19: ordinal not in range(128)
Обновление
Если я удалю все мои инструкции .encode
из всего моего кода и добавлю # -*- coding: utf-8 -*-
в начало моего файла, прямо под #!/usr/bin/python
, тогда я получу следующее, как если бы я не добавил # -*- coding: utf-8 -*-
в все.
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py:1250: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
return ''.join(map(quoter, s))
Traceback (most recent call last):
File "classes.py", line 583, in <module>
wiki.getPage(title)
File "classes.py", line 146, in getPage
url = "http://en.wikipedia.org/w/api.php?action=query&prop=revisions&format=json&rvprop=content&rvlimit=1&titles=" + urllib2.quote(title)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 1250, in quote
return ''.join(map(quoter, s))
KeyError: u'\xf1'
Я не вручную набираю строку, я разбираю HTML и json с веб-сайтов. Таким образом, скрипты/bytestreams/независимо от того, что они есть, созданы python.
Обновление 2. Я могу перемещать ошибку, но она просто продолжает появляться в новых местах. Я надеялся, что python станет полезным инструментом для написания сценариев, но, похоже, через 3 дня не повезло, я просто попробую другой язык. Его позор, python предварительно установлен на osx. Я отметил правильный ответ, который зафиксировал один экземпляр ошибки, которую я опубликовал.