我知道这里已经有人问过这个问题:在php中压缩字符串,在python中解压缩
但是没有提供任何答案(聊天中的讨论已经丢失)。
我希望PHP客户端在其一侧压缩字符串,将其作为json中包含的字符串发送到服务器,然后在我的一侧解压缩。
我尝试了zlib:
$ php -a
Interactive shell
php > $msg = "abcdefghijk";
php > $compressed = gzcompress($msg);
php > echo "'".$compressed."'"
php > ;
'x�KLJNIMK�����c'
$ python3
Python 3.7.8 (heads/master-dirty:daa285d, Jul 28 2020, 20:00:50)
[GCC 9.3.1 20200408 (Red Hat 9.3.1-2)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import zlib
>>> comp_msg=r'x�KLJNIMK�����c'
>>> msg = zlib.decompress(comp_msg.encode('utf-8'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
zlib.error: Error -3 while decompressing data: incorrect header check
...但是它不起作用。我想这是字符串编码的问题,但是使用PHP的mb_convert_encoding($ compressed,“ UTF-8”); 无法解决问题。
我不能通过缺乏声誉来问这个问题的首次出现的创造者。任何帮助将不胜感激。
谢谢
<?php
$msg = "abcdefghijk";
$compressed = gzcompress($msg);
echo "'".addcslashes($compressed, "\x00..\x1F\\\'\"\x7F..\xFF")."'";
// outputs: 'x\234KLJNIMK\317\310\314\312\006\000\031\351\004c'
b
在python中对二进制字符串文字使用前缀:import zlib
comp_msg=b'x\234KLJNIMK\317\310\314\312\006\000\031\351\004c';
msg = zlib.decompress(comp_msg)
print(msg)
# prints: b`abcdefghijk`
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句