Найти - Пользователи
Полная версия: url encode кирилица
Начало » Python для новичков » url encode кирилица
1 2
Iv_
Нужно осуществить запрос к сайту, подскажите как стандартными библиотеками, или же используя 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
import urllib
urllib.urlencode({'var1':u'привет'})
Iv_
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_
Спасибо, проблему решил так:

import urllib
print urllib.quote(“привет”);
helm2004
даю кусок переписки по аське:
- 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_
Подскажите еще, что за странная странность:
Когда пишу
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
Iv_, # -*- coding: utf-8 -*- определяет только в какой кодировке исходник написан. и ко внешним источникам никакого отношения не имеет. необходимо явно конвертировать строку.
Iv_
cutwater
Iv_, # -*- coding: utf-8 -*- определяет только в какой кодировке исходник написан. и ко внешним источникам никакого отношения не имеет. необходимо явно конвертировать строку.
Подскажи пожалуйста как? )))
Iv_
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, если я ничего не путаю.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB