2010-10-22 2 views
5

Как я могу написать строку со специальными символами æøå?Проблема с python urllib urlencode с æøå

ex.

urllib.urlencode('http://www.test.com/q=testæøå') 

Я получаю эту ошибку :(..

не действует последовательности нестроковой или объекта сопоставления

ответ

9

Вы должны пройти словарь UrlEncode, а не строки. См приведенный ниже пример:

from urllib import urlencode 
print 'http://www.test.com/?' + urlencode({'q': 'testæøå'}) 
26

предназначен взять словарь, например:

>>> q= u'\xe6\xf8\xe5' # u'æøå' 
>>> params= {'q': q.encode('utf-8')} 
>>> 'http://www.test.com/?'+urllib.urlencode(params) 
'http://www.test.com/?q=%C3%A6%C3%B8%C3%A5' 

Если вы просто хотите, чтобы URL-кодирования одной строки, функция, которую вы ищете, quote:

>>> 'http://www.test.com/?q='+urllib.quote(q.encode('utf-8')) 
'http://www.test.com/?q=%C3%A6%C3%B8%C3%A5' 

Я Угаданием UTF-8 является правильная кодировка (это должно быть, для современных сайтов). Если вы действительно хотите ?q=%E6%F8%E5, то нужная вам кодировка, вероятно, cp1252 (аналогично iso-8859-1).

 Смежные вопросы

  • Нет связанных вопросов^_^