- 中文乱码问题
- JSON异常
记录工作中遇到的python出错的问题,用于以后进行查错。 中文乱码问题
1.linux控制台print输出中文报错
报错代码:
UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in position 0-1: ordinal not in range(256)
原因:有可能是linux的console输出编码问题
解决方法:
# -*- coding: utf-8 -*- import io import sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
2.flask框架request获取http请求参数时,中文无法正常接收
// post请求 res = requests.post(url=url, params=data) //flask框架接受数据代码 data = request.form.get("text") data = request.args.get("text")
运行上述代码会出现中文编码问题:
//data:%7B%274401%27%3A+%27u897fu5b9d+u5565u65f6u5019u64ad%27%2C+%274402%27%3A+%27u611fu6069%27%2C+%274403%27%3A+%27u6211u6709u5757u6599u5b50u80fdu
原因:http将请求参数放到url中会进行url编码。
解决方法:将请求参数放到body中。代码如下:
//post请求代码 res = requests.post(url=url, data=data)JSON异常
1.json.loads解析json生成dict报错
json = {'0': '想买一个','1': '我的', '3':'骗子主播,想上当的可以买'} dict1 = json.loads(josn)
报错代码:
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
原因:上述json是引号,json严格要求为双引号。
解决办法:
import ast json = {'0': '想买一个','1': '我的', '3':'骗子主播,想上当的可以买'} dict1 = ast.literal_eval(json)