将Python字节串序列化为JSON,保留字符值顺序

6 投票
2 回答
1643 浏览
提问于 2025-04-15 21:51

我在Python(2.x)中生成了一些二进制数据,这些数据是以base-256字节串的形式存在的。现在我需要把这些数据读入JavaScript中,并且希望在字符串中每个字节(字符)的顺序值能够保持不变。简单来说,我想在Python中编码一个字符串s,使得在JavaScript中读取后,ord(s[i]) == s.charCodeAt(i)

看起来最简单的方法是把我的Python字符串转换成JSON格式。不过,json.dump对我的字节串不太友好,尽管我尝试调整了ensure_asciiencoding这两个参数。有没有办法把字节串编码成Unicode字符串,同时保持字符的顺序值不变?否则,我想我需要把ASCII范围之外的字符编码成JSON风格的\u1234转义字符,但像这样的编码器在Python的codecs中似乎没有。

有没有简单的方法可以把Python的字节串序列化成JSON,同时保持字符值不变,还是说我需要自己写一个编码器?

2 个回答

3

你可以直接用Base64吗?(Python有个base64模块,JavaScript也有好几种实现,其中一种可以在这里找到。)

如果你的数据几乎都是文本,那才需要用转义的ASCII或UTF-8。

5

有没有办法把字节串转换成Unicode字符串,同时保持字符的原始值不变?

把字节转换成Unicode的过程叫做解码,而不是编码。不过没问题,使用像iso-8859-1这样的编码方式进行解码,确实可以保持你想要的字符原始值。

撰写回答