Saya menggunakan Python-2.6 CGI
skrip tetapi menemukan kesalahan ini di log server saat melakukan 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
Di sini
__getdata()
mengembalikan fungsi dictionary {}
.
Sebelum posting pertanyaan ini saya telah disebut ini pertanyaan os SO.
PEMBARUAN
Baris berikut ini melukai encoder 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
Saya mendapat perbaikan sementara untuk itu
print json.dumps( {'old_time': now.encode('ISO-8859-1').strip() })
Tetapi saya tidak yakin apakah itu cara yang benar untuk melakukannya.
dict
telahlist, dict, python timestamp value
__getdata
. Saya tidak tahu mengapa Anda mendapatkan karakter yang tidak dapat diterjemahkan. Anda dapat mencoba membuat tambalan pada dikt untuk membuatnya berfungsi, tetapi sebagian besar hanya meminta lebih banyak masalah nanti. Saya akan mencoba mencetak dict untuk melihat di mana karakter non-ascii berada. Kemudian cari tahu bagaimana bidang itu dihitung / ditetapkan dan bekerja mundur dari sana.
dict
?