2010-04-21 11 views
6

Tengo algunos datos binarios producidos como base 256 cadenas de bits en Python (2.x). Necesito leerlos en JavaScript, conservando el valor ordinal de cada byte (char) en la cadena. Si me permite mezclar idiomas, quiero codificar una cadena s en Python de manera que ord(s[i]) == s.charCodeAt(i) después de haberla leído nuevamente en JavaScript.Serializando cadenas de bytes de Python a JSON, conservando los valores de caracteres ordinales

La forma más limpia de hacer esto parece ser serializar mis cadenas de Python a JSON. Sin embargo, json.dump no me gusta mis cadenas de bytes, a pesar de juguetear con los parámetros ensure_ascii y encoding. ¿Hay alguna forma de codificar cadenas de bytes en cadenas Unicode que preserve los valores de caracteres ordinales? De lo contrario, creo que necesito codificar los caracteres por encima del rango ASCII en escapes de estilo JSON \u1234; pero un códec como este no parece estar entre los codecs de Python.

¿Hay una manera fácil de serializar las cadenas de bytes de Python a JSON, conservando los valores de caracteres, o tengo que escribir mi propio codificador?

Respuesta

4

¿Hay una manera de codificar cadenas de bytes a cadenas Unicode que conserva valores de caracteres ordinales?

La transformación Unicode bytes -> se llama decode, no encode. Pero sí, la decodificación con un códec como iso-8859-1 debería "conservar los valores de caracteres ordinales" como lo desee.

+0

Bien, lo seré; eso fue bastante simple. ¡Gracias! –

3

¿Podría usar Base64? (Módulo Python base64, Javascript tiene varias implementaciones, una de las cuales es here.)

No hay razón para usar ASCII o UTF-8 escapado a menos que sus datos sean casi todos de texto.

Cuestiones relacionadas