Ich verwende Python-2.6 CGI
Skripte aber diesen Fehler in Server Log gefunden , während tun 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
Hier,
__getdata()
Funktion kehrt zurück dictionary {}
.
Bevor ich diese Frage poste, habe ich diese Frage an SO weitergeleitet.
AKTUALISIERUNG
Die folgende Zeile verletzt den JSON-Encoder.
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
Ich habe eine vorübergehende Lösung dafür
print json.dumps( {'old_time': now.encode('ISO-8859-1').strip() })
Aber ich bin mir nicht sicher, ob es richtig ist.
dict
hatlist, dict, python timestamp value
__getdata
. Ich weiß nicht, warum du einen nicht dekodierbaren Charakter bekommst. Sie können versuchen, Patches für das Diktat zu erstellen, damit es funktioniert, aber diese fragen später meist nur nach weiteren Problemen. Ich würde versuchen, das Diktat auszudrucken, um zu sehen, wo sich das Nicht-ASCII-Zeichen befindet. Finden Sie dann heraus, wie dieses Feld berechnet / gesetzt wurde, und arbeiten Sie von dort aus rückwärts.
dict
?