Tôi đang sử dụng Python-2.6 CGI
tập lệnh nhưng tìm thấy lỗi này trong nhật ký máy chủ trong khi thực hiện json.dumps()
,
Traceback (most recent call last):
File "/etc/mongodb/server/cgi-bin/getstats.py", line 135, in <module>
print json.dumps(__getdata())
File "/usr/lib/python2.7/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 201, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python2.7/json/encoder.py", line 264, in iterencode
return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa5 in position 0: invalid start byte
Đây
__getdata()
trả về hàm dictionary {}
.
Trước khi đăng câu hỏi này, tôi đã gọi này của câu hỏi os SO.
CẬP NHẬT
Dòng sau đang làm tổn thương bộ mã hóa JSON,
now = datetime.datetime.now()
now = datetime.datetime.strftime(now, '%Y-%m-%dT%H:%M:%S.%fZ')
print json.dumps({'current_time': now}) // this is the culprit
Tôi đã có một sửa chữa tạm thời cho nó
print json.dumps( {'old_time': now.encode('ISO-8859-1').strip() })
Nhưng tôi không chắc chắn đó là cách chính xác để làm điều đó.
dict
đãlist, dict, python timestamp value
__getdata
. Tôi không biết tại sao bạn nhận được một nhân vật không thể giải mã. Bạn có thể cố gắng đưa ra các bản vá trên dict để làm cho nó hoạt động, nhưng những thứ đó chủ yếu chỉ là yêu cầu nhiều vấn đề hơn sau này. Tôi sẽ thử in dict để xem nhân vật không phải là ascii ở đâu. Sau đó tìm hiểu làm thế nào trường đó đã được tính toán / thiết lập và làm việc lạc hậu từ đó.
dict
?