2010-04-21 2 views
6

Ich habe einige binäre Daten, die in Python (2.x) als 256-Byte-Bytestrings erzeugt werden. Ich muss diese in JavaScript lesen und dabei den Ordinalwert jedes Bytes (char) in der Zeichenfolge beibehalten. Wenn Sie mir erlauben, Sprachen zu mischen, möchte ich eine Zeichenfolge s in Python codieren, so dass ord(s[i]) == s.charCodeAt(i), nachdem ich es wieder in JavaScript gelesen habe.Serialisierung von Python-Bytestrings zu JSON unter Beibehaltung der ordinalen Zeichenwerte

Der sauberste Weg dies zu tun scheint zu sein, meine Python-Strings zu JSON zu serialisieren. Allerdings mag json.dump meine Bytestrings nicht, obwohl ich mit den Parametern ensure_ascii und encoding herumgespielt habe. Gibt es eine Möglichkeit, Bytefolgen in Unicode-Strings zu codieren, die ordinale Zeichenwerte beibehalten? Ansonsten denke ich, dass ich die Zeichen über dem ASCII-Bereich in JSON-artige \u1234 Escapezeichen codieren muss; aber ein Codec wie dieser scheint nicht unter Pythons codecs zu sein.

Gibt es eine einfache Möglichkeit, Python-Bytestrings zu JSON zu serialisieren, char-Werte beizubehalten oder muss ich meinen eigenen Encoder schreiben?

Antwort

4

Gibt es eine Möglichkeit bytestrings zu Unicode-Strings zu kodieren, die Ordnungszeichenwerte bewahrt?

Das Byte -> Unicode Transformation decode genannt, nicht encode. Aber ja, Decodierung mit einem Codec wie iso-8859-1 sollte in der Tat "Ordinalzeichen Werte beibehalten", wie Sie möchten.

+0

Nun, ich werde sein; das war ziemlich einfach. Vielen Dank! –

3

Könnten Sie einfach Base64 verwenden? (Python base64 Modul, Javascript hat mehrere Implementierungen, eine davon ist here.)

Kein Grund zu maskiert ASCII oder UTF-8, es sei denn, Ihre Daten sind fast alle Text.

Verwandte Themen