Estoy usando Python-2.6 CGI
scripts pero encontré este error en el registro del servidor mientras lo hacía 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
Aqui
__getdata()
La función vuelve dictionary {}
.
Antes de publicar esta pregunta, me he referido a esta pregunta de SO.
ACTUALIZACIONES
La siguiente línea está dañando el codificador 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
Tengo una solución temporal para ello
print json.dumps( {'old_time': now.encode('ISO-8859-1').strip() })
Pero no estoy seguro de si es la forma correcta de hacerlo.
dict
halist, dict, python timestamp value
__getdata
. No sé por qué estás obteniendo un personaje no decodificable. Puedes intentar crear parches en el dict para que funcione, pero en su mayoría solo piden más problemas más adelante. Intentaría imprimir el dict para ver dónde está el personaje no ascii. Luego descubra cómo se calculó / estableció ese campo y trabaje hacia atrás desde allí.
dict
?