我想在json包中包含一个大的压缩字符串,但是有点困难。在
import json,bz2
myString = "A very large string"
zString = bz2.compress(myString)
json.dumps({ 'compressedData' : zString })
这将导致
^{pr2}$一个明显的解决方案是对整个json结构进行bz2处理,但是我们假设我使用的是一个blackbox api,它执行json编码,它需要dict
另外,我只是以bz2为例,我并不关心实际的算法是什么,尽管我注意到zlib有相同的行为。在
我可以理解为什么这两个压缩库不能创建与utf-8兼容的输出,但是有什么解决方案可以有效地压缩utf-8字符串呢?这个页面看起来像一座金矿http://unicode.org/faq/compression.html,但我找不到任何相关的python信息。在
你的意思是“压缩到UTF-8字符串”?我假设,因为任何通用的压缩器都会压缩UTF-8字符串。然而,现实世界中没有一个压缩器会将UTF-8字符串压缩到到。在
不能像UTF-8那样直接在JSON中存储8位数据,因为JSON字符串被定义为Unicode。在将数据提供给JSON之前,必须对数据进行base64编码:
但是,base64固有地导致4/3编码开销。如果你压缩典型的字符串数据,你可能会得到足够的压缩,这仍然是一个胜利,但这是一个巨大的开销。您可能会发现一种开销较小但不多的编码。在
请注意,如果您使用它来向浏览器发送数据,那么最好让HTTP压缩来完成这项工作;它受到广泛支持,并且会更加健壮。在
相关问题 更多 >
编程相关推荐