Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 13, 2009 14:15:34

kmfdm
От:
Зарегистрирован: 2009-11-13
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите пожалуйста с кодировкой

Новичок.

Поискал по форуму и долго гуглил - но видимо из - за незнания сути проблемы решить не могу на данный момент следующую проблему:

Есть задача - приходит get запрос с параметром referal содержащим текст document.referrer - которому я предварительно делаю encodeURIComponent:

В итоге на сервере я имею в переменной ref например следующее:
http://yandex.ru/yandsearch?text=%D1%81%D0%B5%D0%BA%D1%81+%D1%88%D0%BE%D0%BF&lr=5&stpar2=%2Fh1%2Ftm34%2Fs3&stpar4=%2Fs3&stpar1=%2Fu0
или
ref: http://www.google.ru/search?q=%D1%81%D0%B5%D0%BA%D1%81+%D1%88%D0%BE%D0%BF&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox

Так, здесь вроде бы пока все хорошо, пояснять зачем я делаю encodeURIComponent перед отправкой думаю не следует - мне нужна строка целиком включая параметры идущие за спецсимволами вроде &.

Насколько я знаю по RFC - encodeURIComponent заэскейпил строку в UTF8, т.о тут строка содержащая заэскепенный текст скорее всего в кодировке utf8
Далее мне надо выделить фразу по которой был поиск, которая в google отвечает за это:

    def parse_search(url):
try:
parsed = urlparse.urlsplit(url)
network = parsed[1]
query = parsed[3]
except (AttributeError, IndexError):
return (None, None, None)
for engine, param in SEARCH_PARAMS.iteritems():
match = re.match(NETWORK_RE % engine, network)
if match and match.group(2):
term = cgi.parse_qs(query).get(param)
if term and term[0]:
term = ' '.join(term[0].split()).lower()
return (engine, network, term)
return (None, network, None)
-
После этого параметр term содержит фразу:
        logging.info("term: %s", term)
Выдает:
[I 091113 14:08:11 demo:333] term: ñ�ðµðºñ� ñˆð
мне не важно как в логах это выводится поэтому иду дальше,

Далее мне надо обратно передать эту строку в json
пытался так
term = simplejson.dumps(term)
'term': '"\\u00f1\\u0081\\u00f0\\u00b5\\u00f0\\u00ba\\u00f1\\u0081 \\u00f1\\u0088\\u00f0\\u00be\\u00f0\\u00bf"',
Пытался сделать по - разному - эффект - разного рода кракозяблы на стороне клиента. Использую jQuery.
При этом передавая строку в таком виде
'title': u'\u0421\u0435\u043a\u0441 \u0448\u043e\u043f'
на стороне клиента она отображается верно
——–
Попытка 2
Вопрос: как строку
 term = (urllib.unquote_plus(term))
вида
'term': u'\xf1\x81\xf0\xb5\xf0\xba\xf1\x81 \xf1\x88\xf0\xbe\xf0\xbf'
перевести в нечто подобное:
 u'\u0421\u0435\u043a\u0441 \u0448\u043e\u043f'
Заранее благодарю сообщество за возможную помощь или совет по делу!

читал форум здесь
http://python.su/forum/viewtopic.php?id=5370
http://python.su/forum/viewtopic.php?id=3436
не помогло пока.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version