我们的应用程序的某些部分是用 Ruby 编写的,而其他部分是使用 node.js 编写的。
我们使用存储 zlib 块的 redis 存储在它们之间共享数据。我们使用节点使用以下代码写入它:
zlib.deflate(xml.toString(), function(error, deflated) {
...
deflated.toString('binary'); // That's the string we write in Redis
...
});
现在,我们使用 Ruby (1.8.7) 在 redis 存储中读取了这些数据,我不得不说我不知道该怎么做。
我们从商店获得的典型字符串如下所示:
=> "xuAo \020ÿ\ná.£v½\030dÿCO½±:«¤(\004ƪÿ¾¬®5MÚ\003÷½IÞ q¤°²e°c¼òÈ×\000ó<ùM¸ÐAç\025ÜÈ\r|gê\016Ý/.é\020ãÆî×\003Ôç<Ýù2´F\n¨Å\020!zl \0209\034p|üÀqò\030\036m\020\e`\031¼ÏütÓ=ø¦U/ÔO±\177zB{\037½£-ðBu©ò¢X\000kb*Ó[V\024Y^½EÎ¥üpúrò¦\177ÁÃdÈ¢j\0353$a\027²q#¥]*Ýi3J8¤´füd\eså[³öʵ%\fcÇY\037ð¬ÿg§í^¥8£Õ§a¶\001=\r;¡¾\001\020Pí"
当然,我尝试使用, Zlib::Inflate.new.inflate(compressed)
但使用Zlib::DataError: incorrect header check
.
关于我们应该对该字符串进行何种转换以从 Ruby 中对其进行膨胀的任何想法?
PS:从节点膨胀它很容易并且有效,所以问题不在于我们如何压缩它。