urllib.urlopen и русскией URL'ы

Подскажите, как urllib'ой можно открыть русские УРЛы?
Всевозможные варианты:

urllib2.urlopen(u'http://my_site/method?¶m1=Русский текст'.encode('utf-8'))

или
text = u'Русский текст c пробелом'
urllib2.urlopen(u'http://my_site/method?¶m1=%s' % text)


или
text = unicode(u'Русский текст c пробелом')
urllib2.urlopen(u'http://my_site/method?¶m1=%s' % text)


не помагают.
  • Вопрос задан
  • 8772 просмотра
Пригласить эксперта
Ответы на вопрос 4
un1t
@un1t
это было для параметров, а для доменов нужно использовать punycode
'домен.рф'.encode('idna')
Ответ написан
Комментировать
un1t
@un1t
urllib.urlencode({'param': u'текст'.encode('utf-8')})
Ответ написан
Комментировать
Vas3K
@Vas3K
Если я правильно понял вас, то вы пытаетесь открыть IRI как URI, что не совсем верно. Для перевода из IRI существует много методов. Можно просто юзать urllib.unquote(), но он не всегда подходит. Потому гуглим по запросу «python iri to uri» и тырим нужный код. Там небольшой метод, я лично выдрал из фреймворка Django (вроде бы django.utils.encoding.iri_to_uri)
Ответ написан
@SERGE_GAM
Пример для 'https://bdt.spb.ru/афиша':
bdt = 'https://bdt.spb.ru/'+ quote('афиша')
urllib.request.urlopen(bdt)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы