Iv_
Март 9, 2010 14:41:13
Нужно осуществить запрос к сайту, подскажите как стандартными библиотеками, или же используя 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 получить, чтобы каждый символ двумя байтами
regall
Март 9, 2010 14:43:26
import urllib
urllib.urlencode({'var1':u'привет'})
Iv_
Март 9, 2010 14:46:36
regall
import urllib
urllib.urlencode({'var1':u'привет'})
>>> import urllib
>>> urllib.urlencode({'var1':u'привет'})
Traceback (most recent call last):
File “<interactive input>”, line 1, in <module>
File “C:\Python26\Lib\urllib.py”, line 1268, in urlencode
v = quote_plus(str(v))
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 0-5: ordinal not in range(128)
в чем может быть дело?
Iv_
Март 9, 2010 14:54:58
Спасибо, проблему решил так:
import urllib
print urllib.quote(“привет”);
helm2004
Март 9, 2010 14:55:17
даю кусок переписки по аське:
- 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
- спасибо!!!
Iv_
Март 9, 2010 15:12:34
Подскажите еще, что за странная странность:
Когда пишу
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 -*-
cutwater
Март 9, 2010 15:45:10
Iv_, # -*- coding: utf-8 -*- определяет только в какой кодировке исходник написан. и ко внешним источникам никакого отношения не имеет. необходимо явно конвертировать строку.
Iv_
Март 10, 2010 06:57:46
cutwater
Iv_, # -*- coding: utf-8 -*- определяет только в какой кодировке исходник написан. и ко внешним источникам никакого отношения не имеет. необходимо явно конвертировать строку.
Подскажи пожалуйста как? )))
Iv_
Март 10, 2010 07:17:33
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
Андрей Светлов
Март 10, 2010 07:57:28
На Windows используется cp866 для sys.argv, если я ничего не путаю.