您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Python 3中腌制和解开便携式字符串

如何在Python 3中腌制和解开便携式字符串

pickle.dumps()产生一个bytes对象。期望这些任意字节是有效的UTF-8文本(您通过尝试将其解码为UTF-8的字符串所做出的假设)是相当乐观的。如果能奏效,那将是一个巧合!

一种解决方案是使用完全使用ASCII字符的较早的酸洗协议。仍然显示bytes,但是由于它是纯ASCII格式,因此可以轻松解码为字符串:

pickled = pickle.dumps(obj, 0).decode()

您还可以使用其他一些编码方法将经过二进制处理的对象编码为文本,例如base64:

import codecs
pickled = codecs.encode(pickle.dumps(obj), "base64").decode()

解码将是:

unpickled = pickle.loads(codecs.decode(pickled.encode(), "base64"))

pickle与协议0一起使用似乎会导致字符串比base64编码的二进制泡菜更短(并且abarnert提出的十六进制编码的建议甚至会比base64更大),但是我还没有对其进行严格的测试。用您的数据进行测试并查看。

python 2022/1/1 18:44:03 有312人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶