程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> Django漢字Cookie編碼問題

Django漢字Cookie編碼問題

編輯:Python

Django設置Cookie時需要注意,不能直接把utf-8編碼的漢字保存到Cookie中,否則會出現 UnicodeEncodeError ,提示:‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128) 。

解決這個問題很簡單,只需要將Cookie由 unicode 類型轉為 str 類型就可以了,可以用傳統的方法,如:

from urllib import unquote
un = u"漢字"
# response.set_cookie("username", un) # UnicodeEncodeError!
un2 = unquote(unicode(un).encode("utf-8"))
response.set_cookie("user_name", un2) # OK

 

另外,也可以使用Django提供的專門處理這類編碼問題的方法。Django一共提供了三個方法:

django.utils.encoding.smart_unicode
django.utils.encoding.force_unicode
django.utils.encoding.smart_str

 

在這兒,我們要用的是smart_str。於是,我們的代碼也可以這樣寫:

from django.utils.encoding import smart_str
un = u"漢字"
# response.set_cookie("username", un) # UnicodeEncodeError!
un2 = smart_str(un)
response.set_cookie("user_name", un2) # OK

這樣寫,是不是更簡潔一些呢?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved