解决Python中设置与获取cookie时出现的中文编码问题。
python中直接设置与获取cookie时,会出现编码错误。
(1)在设置cookie时没有考虑编码问题,例如书写的格式为:
response.set_cookie("favorite_color",request.GET["favorite_color"])
当cookie中含有中文时,可能会出现下面的错误:
Traceback (most recent call last):File "D:\program files\python37\lib\socketserver.py", line 650, in process_request_threadself.finish_request(request, client_address)File "D:\program files\python37\lib\socketserver.py", line 360, in finish_requestself.RequestHandlerClass(request, client_address, self)File "D:\program files\python37\lib\socketserver.py", line 720, in __init__self.handle()File "D:\python\workspace\mysite\venv\lib\site-packages\django\core\servers\basehttp.py", line 154, in handlehandler.run(self.server.get_app())File "D:\program files\python37\lib\wsgiref\handlers.py", line 144, in runself.close()File "D:\program files\python37\lib\wsgiref\simple_server.py", line 35, in closeself.status.split(' ',1)[0], self.bytes_sent AttributeError: 'NoneType' object has no attribute 'split'
(2)我们可能会想到在设置cookie值的时候通过encode('utf-8')函数进行转码,于是进一步改进的代码为:
response.set_cookie("favorite_color",request.GET["favorite_color"].encode('utf-8'))
这是网页就能顺利获取到的cookie中包含的中文字符了。
但是又出现了另外一个问题:后台获取刚刚存放在cookie中的值时,显示的内容不是原本的字符,而是转码后的十六进制字符,类似于下面这种:
Your favorite color is b'\xe8\x93\x9d\xe7\xbb\xbf\xe8\x89\xb2'
(3)解决方案为:
存储cookie的方法:
favorite_color=request.GET.get('favorite_color') color=favorite_color.encode('utf-8').decode('latin-1') response.set_cookie("favorite_color",color)
获取cookie的方法:
return HttpResponse("Your favorite color is %s" % request.COOKIES["favorite_color"].encode('latin-1').decode('utf-8'))
转载于:https://www.cnblogs.com/wyhluckdog/p/11396540.html
解决Python中设置与获取cookie时出现的中文编码问题。相关推荐
- python construct 字符串_通过字符串变量在Python中设置和获取@property方法
目前我有一个通用函数,你可以传入一个属性名和一个类(它也适用于特定的对象实例,但我正在使用类),该函数将通过调用查找并操作该属性 getattr(model_class, model_attribut ...
- Python Django 设置和获取Cookie代码示例
- python画图y轴在右侧_解决python中画图时x,y轴名称出现中文乱码的问题
如下所示: #-*- coding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt from matplotlib.font_ ...
- 解决python 使用time.loacltime()获取当前时间不准问题
解决python 使用time.loacltime()获取当前时间不准问题 作为python小白的我,果然容易犯很多低级的错误或者说又不自觉想当然了,导致又花费了好长时间处理BUG. 我在我的爬虫代码 ...
- python画图程序没有图_解决python中使用plot画图,图不显示的问题
解决python中使用plot画图,图不显示的问题 对以下数据画图结果图不显示,修改过程如下 df3 = {'chinese':109, 'American':88, 'German': 66, 'K ...
- 解决Python中加载sklearn人脸数据集出现的fetch_olivetti_faces HTTPError: HTTP Error : Forbidden
解决Python中加载sklearn人脸数据集出现的fetch_olivetti_faces HTTPError: HTTP Error : Forbidden 在使用Python进行机器学习或深度学 ...
- python字符串拼接数字_解决Python中字符串和数字拼接报错的方法
解决Python中字符串和数字拼接报错的方法 前言 众所周知Python不像JS或者PHP这种弱类型语言里在字符串连接时会自动转换类型,如果直接将字符串和数字拼接会直接报错. 如以下的代码: # co ...
- python画指数函数图像_解决python中的幂函数、指数函数问题
最近在调代码,碰到幂函数.指数函数,总是提示 ValueError: math domain error ValueError: negative number cannot be raised to ...
- python getattr调用自己模块_在Python中通过getattr获取对象引用的方法
getattr函数 (1)使用 getattr 函数,可以得到一个直到运行时才知道名称的函数的引用. >>> li = ["Larry", "Curly ...
- 成功解决python中出现的IndentationError: expected an indented block的错误
成功解决python中出现的IndentationError: expected an indented block的错误 目录 解决问题 解决思路 解决方法 解决问题 当在python中出现这个错误 ...
最新文章
- wine on ubuntu linux, and source insight 绿色版的安装
- 有备无患的Linux操作系统备份方法
- oracle 空间数据字段,Oracle spatial创建空间数据的字段详解
- 虚拟鼠标代替安卓触屏_美术学院18级虚拟空间设计专业数字图像程序基础课程优秀结课成果展示优秀学生王雨禾作品展示...
- Problem01 不死神兔
- protobuf序列化使用说明
- 北大核心期刊目录2020_2020年RCCSE权威、核心期刊目录总览
- IDEA 代码格式化
- Windows操作系统 | Visual C++库可不能乱删
- Xcode12 兼容iOS14 及下载链接
- 关于PC浏览器js提示兼容问题的代码 “您的浏览器版本太低了,已经和时代脱轨了“ 强制锁定极速模式
- AdapterView与Adapter
- android x86 usb检查不到,【android9.0】system/core下的usbhost模块无法输出log到logcat
- 如何将在ad里面添加元器件符号_请教怎么在AD10中的PCB中直接加入自己创建的封装库文件中的元件...
- cαr怎么发音_最全英语口语发音规则与技巧
- 盘是什么意思计算机网络,hdd网络上什么意思
- 算笔账:养老保险应该少交还是多交
- 怎样改变照片大小?免费在线图片压缩方法
- 桌面计算机1008桌面计算机,windows桌面精灵
- 处理JSON最强命令jq使用详解