python / php - 跨语言字符串压缩(使用gzcompress/urlencode/json)
我在使用Python 2.6的时候,有一个程序需要把大量的HTML文本存储到AWS的DynamoDB数据库里。问题是,这些存储的数据占用了很多空间,而且在简单取数据的时候也消耗了不少计算资源。所以我在想有没有办法把这些字符串压缩成更轻便的形式。
我做了一些简单的测试,发现下面的方法有效(大大减少了DynamoDB的计算资源消耗),但我想听听大家的意见,这样做是否是最好的选择。
以下是我用Python 2.6生成一个普通文本的gzip压缩版本的代码,这个json数组里有几个键,每个键对应一个大的HTML块。
import urllib, json
str = urllib.quote(json.dumps({'foo1': 'bar'}).encode('zlib').encode('base64'))
然后我可以用PHP运行以下代码,把字符串还原成原来的数组:
json_decode(gzuncompress(base64_decode(urldecode($str))),1);
有没有人有好的建议,或者说这样做是否是实现我目标的最佳方法?
2 个回答
0
你可以使用base64编码
Python代码:
import base64
print(base64.b64encode(b"Hello World").decode())
PHP代码:
base64_decode("your base64 encoded text from the python script")
0
你真的需要把数据存成普通字符串在数据库里吗?其实你可以省略base64编码,直接把数据以二进制形式存入数据库,这样可以稍微提高代码的运行速度。反正数据是经过压缩的,所以你也无法直接查看它的内容。 http://aws.amazon.com/about-aws/whats-new/2012/08/21/dynamodb-announces-binary-data-types/