2011-07-29 4 views
0

値にスペースがある場合、 "example"コードを使用してクッキーに最初の単語のみが保存されます。Pythonでユニコードクッキーを設定する普遍的な方法

本当に正しいユニコード対応の方法は何ですか?

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

UPD。解決策は

+0

あなたはこれを探していますか:http://docs.python.org/library/cookie.html –

+0

ハハ。私はクッキーを正しく設定する必要がある最初の人間だと思う。 Cookie.SimpleCookieクラスは、App Engineが必要としない間に 'Set-Cookie'を生成します。 –

+0

お読みください。 http://docs.python.org/library/cookie.html#Cookie.Morsel.coded_valueがお探しのものである可能性があります。あなたがどのようなコードを持っているのか、どのようなエラーが出ているのかは疑問から分かりません。 –

答えて

2

が最後に仕事をされて下回っている。

  1. クッキーが
  2. エスケープされていないカスタムコードをCookie.SimpleCookieでエスケープ
  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 
関連する問題