我有一个字符串,但我不知道编码的类型。
原始数据如下:
{
"securityProxyResponseEnvelope":{
"resultCode":"OK",
"apiResponse":"{zlibe}9mtdE350h9rd4h7wlFX3AkeCtNsb40FFaEZAl/CfcNNKrhGXawhgAs2rI4rnEgIwLpgJkKl+qkB0kzJ6+ZFmmz12Pl9/9MPdA1unUKL5OdHcWmAZim3ZjDXFGCW4zruCS/IOSiU1qVKAF5qIbocB4+2rAF7zH18SRtmXM8YW3eYs5w1NPjmYkM31W8x7QvrKkzFscH3kqDwmYn0I2gNNOtfwuKjWd5snunyqxPopZHNX3CBdW/pj4+N0tJXjAoHorCe8Ypmjxnvh3zthkLTbiBLgeULH1hGvVtkI0C9PGMyt/92upVW6qHxqCYoO/LTJK1tq6OpBnMRBNZDDntSRkrzp+1RpvzbBxFtwQ9jh45eSthbG5hq+D2oJkW5zrGi6TM8eG4ztCqRoO9dEvz2JbQsDCTPz70+C6iPYdkvOyqji18ysLjBbGcHw1j45YItcurVxp0FChxXrnHZwu6m430xKEp7ONxvgEZurt3T8qAjrkrbHfd8jRjDydUXYsMoa",
"session":"n3qp6jzHwZkXWSMW3VBF:jitqBjBmlZbrgcEgY7Od",
"parameters":{
}
}
}
字符串
我想在data['securityProxyResponseEnvelope']['apiResponse']
中删除字符串。
我在做的是:
@clear_string_from_data = '9mtdE350h9rd4h7wlFX3AkeCtNsb40FFaEZAl/CfcNNKrhGXawhgAs2rI4rnEgIwLpgJkKl+qkB0kzJ6+ZFmmz12Pl9/9MPdA1unUKL5OdHcWmAZim3ZjDXFGCW4zruCS/IOSiU1qVKAF5qIbocB4+2rAF7zH18SRtmXM8YW3eYs5w1NPjmYkM31W8x7QvrKkzFscH3kqDwmYn0I2gNNOtfwuKjWd5snunyqxPopZHNX3CBdW/pj4+N0tJXjAoHorCe8Ypmjxnvh3zthkLTbiBLgeULH1hGvVtkI0C9PGMyt/92upVW6qHxqCYoO/LTJK1tq6OpBnMRBNZDDntSRkrzp+1RpvzbBxFtwQ9jh45eSthbG5hq+D2oJkW5zrGi6TM8eG4ztCqRoO9dEvz2JbQsDCTPz70+C6iPYdkvOyqji18ysLjBbGcHw1j45YItcurVxp0FChxXrnHZwu6m430xKEp7ONxvgEZurt3T8qAjrkrbHfd8jRjDydUXYsMoa'
@decoded = Base64.decode64(@clear_string_from_data)
@inflated = Zlib::Inflate.inflate(@decoded)
型
但这个又回来了
#=> Zlib::DataError: incorrect header check
型
是什么导致了这个问题,接下来我可以尝试什么来恢复数据?
3条答案
按热度按时间8zzbczxx1#
当我试图在一个没有被Zlib压缩的数据上调用inflate时,我得到了这个。在我的例子中,它是一个单元测试,我发送了一个普通的字符串,只是忘记了先调用.deflate。
在你的例子中,如果你这样做,你不会得到错误:
第一个月
8zzbczxx2#
是什么导致了它不是zlib数据。你应该问是谁在生产原始数据。
v7pvogib3#
Zlib::GzipReader是专门为解压缩使用Gzip压缩格式压缩的数据而设计的。Gzip是一种广泛用于文件和流的压缩格式。如果您的数据是Gzip压缩的,这是合适的选择。
字符串
Zlib::Inflateinflate是一种比较通用的解压缩方法,可以处理Zlib库支持的各种压缩格式,包括Gzip、Deflate等,如果您的数据是使用Gzip以外的格式压缩的,则可以使用此方法处理。
型