Уведомления

Группа в Telegram: @pythonsu

#1 Март 28, 2010 12:14:19

nerezus
От:
Зарегистрирован: 2006-08-01
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

utf8 и парсинг qs

на джаваскрипте переменная с произвольными символами кодируется через escape и передается на сервер.
Как получить ее и отправить обратно на страничку?
Кодировка UTF-8 везде.

У меня получаются такие вещи:
Ввожу: 123dfва, оно подвергается escape
query: message=123df%D0%B2%D0%B0

Далее использую: dict(cgi.parse_qsl(query))

print выдает: {“message”: “123df\u0432\u0430”}
На странице: 123df%u0432%u0430

Как сделать, чтобы на страницу приходило нормальное 123dfва?



Офлайн

#2 Март 28, 2010 16:38:34

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

utf8 и парсинг qs

для кодирования URL нужно использовать encodeURIComponent().
Причем ключ и значение кодируешь отдельно, а только затем склеиваешь в строку key=value



Офлайн

#3 Март 28, 2010 18:47:00

nerezus
От:
Зарегистрирован: 2006-08-01
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

utf8 и парсинг qs

query: message=123df%D0%B2%D0%B0
Не изменится.



Офлайн

#4 Март 29, 2010 01:19:59

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

utf8 и парсинг qs

# coding: utf-8

import cgi

s = 'message=123df%D0%B2%D0%B0'

print cgi.parse_qsl(s)[0][1]
выводит
123dfва
Ты где-то ошибся с кодировками, или в скрипте, или с кодировкой файла, или с консолью, или с питоном 3.0 :)



Офлайн

#5 Март 29, 2010 10:20:53

nerezus
От:
Зарегистрирован: 2006-08-01
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

utf8 и парсинг qs

Ах ты ж блин… ночью писал и эскейпинг случайно применил не к той строке =\
Сразу 2 ошибки исправились.

Спасибо за помощь.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version