Сериализация байтовых строк Python в JSON, сохранение порядковых значений - PullRequest
6 голосов
/ 21 апреля 2010

У меня есть некоторые двоичные данные, созданные как строки байтов base-256 в Python (2.x). Мне нужно прочитать их в JavaScript, сохраняя порядковый номер каждого байта (символа) в строке. Если вы позволите мне смешивать языки, я хочу закодировать строку s в Python так, чтобы ord(s[i]) == s.charCodeAt(i) после того, как я прочитал ее обратно в JavaScript.

Кажется, что самый чистый способ сделать это - сериализовать мои строки Python в JSON. Тем не менее, json.dump не нравятся мои байтовые строки, несмотря на то, что они возятся с параметрами ensure_ascii и encoding. Есть ли способ кодировать байтовые строки в строки Unicode, которые сохраняют порядковые значения символов? В противном случае я думаю, что мне нужно кодировать символы выше диапазона ASCII в JSON-стиле \u1234 escape-символы; но подобный кодек, похоже, не входит в число Python codecs.

Существует ли простой способ сериализации байтовых строк Python в JSON с сохранением значений символов или мне нужно написать собственный кодировщик?

Ответы [ 2 ]

5 голосов
/ 21 апреля 2010

Есть ли способ кодировать строки байтов в Unicode-строки, которые сохраняет порядковые значения символов?

Преобразование байта -> в Unicode называется decode, а не encode. Но да, декодирование с помощью кодека, такого как iso-8859-1, должно действительно "сохранять порядковые значения символов", как вы хотите.

3 голосов
/ 21 апреля 2010

Не могли бы вы просто использовать Base64? (Модуль Python base64, Javascript имеет несколько реализаций, одна из которых здесь .)

Нет причин использовать экранированный ASCII или UTF-8, если ваши данные не содержат почти весь текст.

...