python3 django 中文乱码_python3 wsgi服务和响应数据中文乱码问题

背景:WSGI是一个协议,或者标准,用来描述Server与Framework之间的通信接口。Flask、Django、web.py等等符合WSGI标准。

项目中,需要两个服务间互相调用,为了方便就在本地启动了wsgi服务,想要从服务端返回纯文本数据,发现会导致中文乱码,如下图所示,分别是response,type(response),response.text

响应数据.png

应该在response_headers的Content-Type中增加charset:utf-8的字符集规定,请求和服务代码如下:

# http请求代码

import requests

url = 'http://127.0.0.1:8080/'

target_value = "这是要发送的数据,target的value"

data = '{"target":"%s"}' % target_value

res = requests.post(url=url, data=data)

print(res, type(res), res.text)

# wsgi服务端代码

from wsgiref.simple_server import make_server

def application(environ, start_response):

request_body_size = int(environ.get('CONTENT_LENGTH', 0))

request_body = environ['wsgi.input'].read(request_body_size)

a = json.loads(request_body)

target = str(a['target'])

response_data = someFunc(target)

response_body = "%s" % response_data

status = '200 OK'

response_headers = [('Content-Type','text/plain;charset:utf-8'),('Content-Length',str(len(response_body)))]

start_response(status, response_headers)

return [response_headers.encode('utf-8')]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值