Форум сайта python.su
Нужно осуществить запрос к сайту, подскажите как стандартными библиотеками, или же используя PyCurl из строки “привет” получить строку “%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82”.
Спасибо.
Пробовал так
import urllib
params = urllib.urlencode({'q': “привет”})
print params
но выводит, что “привет” это “%EF%F0%E8%E2%E5%F2”. А мне надо utf получить, чтобы каждый символ двумя байтами
Отредактировано (Март 9, 2010 14:44:19)
Офлайн
import urllib
urllib.urlencode({'var1':u'привет'})
Офлайн
regall>>> import urllibimport urllib
urllib.urlencode({'var1':u'привет'})
Отредактировано (Март 9, 2010 14:47:45)
Офлайн
Спасибо, проблему решил так:
import urllib
print urllib.quote(“привет”);
Офлайн
даю кусок переписки по аське:
- from urllib import unquote
- я дико извиняюсь, но я перевел строку в вид u'\xd0\xb2\xd0\xb0\xd0\xbf\xd0\xb2\xd0\xb0\xd0\xbf\xd0\xb2\xd0\xb0' , а дальше как можно ее перевести в кирилицу?
- убрать впереди u, так как это utf8 а не юникод
- строка.decode('utf-8') сделает unicode
- спасибо!!!
Офлайн
Подскажите еще, что за странная странность:
Когда пишу
print urllib.quote(“привет”);
он выводит нормально:
%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82
а когда пишу:
print urllib.quote(sys.argv) # а в sys.argv=привет
то он выводит
%EF%F0%E8%E2%E5%F2
в начале файла прописано:
# -*- coding: utf-8 -*-
Офлайн
Iv_, # -*- coding: utf-8 -*- определяет только в какой кодировке исходник написан. и ко внешним источникам никакого отношения не имеет. необходимо явно конвертировать строку.
Отредактировано (Март 9, 2010 15:45:47)
Офлайн
cutwaterПодскажи пожалуйста как? )))
Iv_, # -*- coding: utf-8 -*- определяет только в какой кодировке исходник написан. и ко внешним источникам никакого отношения не имеет. необходимо явно конвертировать строку.
Офлайн
sys.argv.decode(“utf-8”)
выдает
print sys.argv.decode(“utf-8”)
File “C:\Python26\Lib\encodings\utf_8.py”, line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: ‘utf8’ codec can't decode bytes in position 0-2: invalid data
Офлайн
На Windows используется cp866 для sys.argv, если я ничего не путаю.
Офлайн