Универсальный способ установки юникод-куки в Python - PullRequest
0 голосов
/ 29 июля 2011

Только первое слово сохраняется в cookie с использованием кода "example", если в значении есть пробел.

Каков действительно правильный, совместимый с юникодом способ сделать это?

response.headers.add_header(
  'Set-Cookie',
  '%s=%s; expires:Sun, 31-May-2020 23:59:59 GMT; path=/;' % (key, value))

UPD. Решение ниже

1 Ответ

2 голосов
/ 29 июля 2011

Наконец работа выполнена:

  1. куки-файлы сбежали с Cookie.SimpleCookie
  2. без экранирования с пользовательским кодом
  3. кодировка / декодирование Unicode с кодированием / декодированием строки

код:

import Cookie
def set_unicode_cookie(response, key, value):
  c = Cookie.SimpleCookie()
  c[key] = value.encode('unicode-escape')
  c[key]["expires"] = "Sun, 31-May-2020 23:59:59 GMT"
  c[key]["path"] = "/"
  response.headers.add_header('Set-Cookie', c[key].OutputString())

def get_unicode_cookie(request, key, defult_value):
  def unescape(s):
    m = re.match(r'^"(.*)"$', s)
    s = m.group(1) if m else s
    return s.replace("\\\\", "\\")
  if request.cookies.has_key(key):
    return unescape(request.cookies[key]).decode('unicode-escape')
  else:
    return default_value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...