我正在编写的一个Android应用程序获取使用LZString压缩的数据,并以base 64的形式发送出去。我在用
this implementation
对于Java中的LZString以及
this one
在PHP中。这两种实现都是顶级的建议
listed here
作者原创的JavaScript端口LZW。
我很难理解为什么PHP发送的LZString数据在Java中会抛出异常。经过大量的实验和紧张的神经,我最终发现这个问题归结于Java中的明显填充,而在从PHP发送的数据中,这个填充是不存在的。以下为例
Original String being compressed
贝蒂买了一点黄油,但它是苦的,所以她买了一些更好的黄油,使苦的黄油更好
我用来测试的一个句子,因为有了它的多次重复,可能会压缩得很好。
LZString的PHP实现抛出以下字节数组
69 73 85 119 76 109 67 101 65 69 66 71 68 50 66 88 65 53 103 67 122 78 65
104 110 65 108 104 43 65 90 110 73 104 67 65 69 55 69 90 55 81 68 117 109 65
122 114 113 82 102 102 78 80 97 105 72 69 109 104 113 119 76 90 100 89 52 77
79 85 113 105 75 89 78 118 48 119 66 114 76 109 69 53 77 74 52 115 99 79 90
65
而Java实现生成以下字节数组
69 73 85 119 76 109 67 101 65 69 66 71 68 50 66 88 65 53 103 67 122 78 65
104 110 65 10