1、错误信息
SyntaxError: Non-UTF-8 code starting with ‘\xe8’ in file D:\xxxx\scripts\testjson.py on line 4, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
- 错误是执行下面的代码导致的;题主是以eclipse为例
import jsonpath
sert = {
'code': '200', 'msg': '请求成功', 'data': {
'records': [{
'id': None, 'tenantId': None, 'houseRoomId': '170156xxxxx50628', 'houseBaseId': '1701568827xxxx8', 'houseAddress': '深圳市南山区南山街道自动化xxxxx-201', 'address': '自动化测试房源房间xxxx', 'houseMaintainersId': '161390xxxx94530', 'houseType': 3, 'actualPrice': 1234.0, 'cityName': '深圳市', 'areaName': '南山区', 'townName': '南山街道', 'communityName': '自动化测试房源房间', 'buildingNo': '1', 'unit': '1', 'doorplate': '201', 'roomName': '201', 'isMainRoom': 1, 'houseArea': 88.0, 'houseAlias': '1栋1单元', 'roomTypeId': '1701569xxxx2913', 'roomTypeName': None, 'deptId': '15863544xxxxx4', 'deptName': None, 'is_bind_all_device': 0, 'deviceInfos': [], 'communityId': '1701568xxxx8721', 'buildingId': '1701568xxxx50624', 'houseBizMode': 2, 'talentedHouseTypeId': None, 'talentedHouseStatus': '1', 'propertyPrice': None}], 'total': 20, 'size': 20, 'current': 1, 'orders': [], 'optimizeCountSql': True, 'searchCount': True, 'maxLimit': None, 'countId': None, 'pages': 1}}
print(type(sert))
2、解决过程
- 首先直接忽视后面错误提示的详情地址:http://python.org/dev/peps/pep-0263/
- 先百度前面半截错误信息:SyntaxError: Non-UTF-8 code starting with ‘\xe8’
- 明眼人都知道这肯定是字符编码的问题,中文在这里执行无法识别
2.1、结论
百度会有两种解决办法:
1、在脚本前面注释加coding指定编码格式
2、编辑IDE设置编码格式
然而都不一定有用,甚至还浪费了更多纠结的时间。
2.2、正解
直接访问错误提示的地址,从上面去找到答案。
3、不要盲目相信自己百度的能力
#!/usr/bin/python
# -*- coding: latin-1 -*-
import jsonpath
sert = {
'code': '200', 'msg': '请求成功', 'data': {
'records': [{
'id': None, 'tenantId': None, 'houseRoomId': '170156xxxxx50628', 'houseBaseId': '1701568827xxxx8', 'houseAddress': '深圳市南山区南山街道自动化xxxxx-201', 'address': '自动化测试房源房间xxxx', 'houseMaintainersId': '161390xxxx94530', 'houseType': 3, 'actualPrice': 1234.0, 'cityName': '深圳市', 'areaName': '南山区', 'townName': '南山街道', 'communityName': '自动化测试房源房间', 'buildingNo': '1', 'unit': '1', 'doorplate': '201', 'roomName': '201', 'isMainRoom': 1, 'houseArea': 88.0, 'houseAlias': '1栋1单元', 'roomTypeId': '1701569xxxx2913', 'roomTypeName': None, 'deptId': '15863544xxxxx4', 'deptName': None, 'is_bind_all_device': 0, 'deviceInfos': [], 'communityId': '1701568xxxx8721', 'buildingId': '1701568xxxx50624', 'houseBizMode': 2, 'talentedHouseTypeId': None, 'talentedHouseStatus': '1', 'propertyPrice': None}], 'total': 20, 'size': 20, 'current': 1, 'orders': [], 'optimizeCountSql': True, 'searchCount': True, 'maxLimit': None, 'countId': None, 'pages': 1}}
print(type(sert))
再执行就不会报错了,是不是很简单;有没有被自己的’蠢’而感到羞愧?题主面壁去了。