2010-04-21 10 views
6

Mam niektóre dane binarne produkowane jako base-256 bytestrings w Pythonie (2.x). Muszę je przeczytać w JavaScript, zachowując porządkową wartość każdego bajtu (znaku) w ciągu znaków. Jeśli pozwolisz mi mieszać języki, chcę zakodować ciąg s w Pythonie taki, że ord(s[i]) == s.charCodeAt(i) po przeczytaniu go z powrotem do JavaScript.Serializing Python bytestrings do JSON, zachowując porządkowe wartości znaków

Najczystszym sposobem na zrobienie tego wydaje się być serializacja moich łańcuchów w języku Python do JSON. Jednak, json.dump nie lubi moich bytestring, pomimo błądzenia z parametrami ensure_ascii i encoding. Czy istnieje sposób kodowania bajtów na ciągi znaków Unicode, które zachowują wartości znaków porządkowych? W przeciwnym razie, myślę, że muszę zakodować znaki powyżej zakresu ASCII do postaci w stylu JSON \u1234; ale kodek taki jak ten nie wydaje się być wśród Pythona codecs.

Czy istnieje prosty sposób serializacji bajtów bytów do JSON, zachowując wartości char lub czy muszę napisać własny koder?

Odpowiedz

4

Czy istnieje sposób, aby zakodować bytestrings do Unicode zabezpieczający je porządkowe wartości znaków?

Bajt -> transformacja unicode nazywa decode, nie encode. Ale tak, dekodowanie za pomocą kodeka, takiego jak iso-8859-1 powinno rzeczywiście "zachować porządkowe wartości znakowe", jak chcesz.

+0

Cóż, będę; to było całkiem proste. Dzięki! –

3

Czy możesz po prostu użyć Base64? (Moduł Python base64, Javascript ma kilka implementacji, z których jedna to here.)

Nie ma powodu, aby używać zbiegów ASCII lub UTF-8, chyba że dane są prawie wszystkie teksty.

Powiązane problemy