使用 zlib 在 php 中压缩字符串并在 python 中解压缩
Compress string in php and decompress in python using zlib
我知道这个问题已经有人问过:Compress string in php and decompress in 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");没有解决问题。
由于缺乏声誉,我不能问这个问题第一次出现的创建者......
任何帮助将不胜感激。
谢谢
- 尝试转义字符串常量中的 non-ASCII 个字符:
<?php
$msg = "abcdefghijk";
$compressed = gzcompress($msg);
echo "'".addcslashes($compressed, "\x00..\x1F\\'\"\x7F..\xFF")."'";
// outputs: 'x4KLJNIMK7042[=10=]6[=10=]011[=10=]4c'
- 尝试在 python:
中对二进制字符串文字使用 b
前缀
import zlib
comp_msg=b'x4KLJNIMK7042[=11=]6[=11=]011[=11=]4c';
msg = zlib.decompress(comp_msg)
print(msg)
# prints: b`abcdefghijk`
我知道这个问题已经有人问过:Compress string in php and decompress in 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");没有解决问题。
由于缺乏声誉,我不能问这个问题第一次出现的创建者...... 任何帮助将不胜感激。
谢谢
- 尝试转义字符串常量中的 non-ASCII 个字符:
<?php
$msg = "abcdefghijk";
$compressed = gzcompress($msg);
echo "'".addcslashes($compressed, "\x00..\x1F\\'\"\x7F..\xFF")."'";
// outputs: 'x4KLJNIMK7042[=10=]6[=10=]011[=10=]4c'
- 尝试在 python: 中对二进制字符串文字使用
b
前缀
import zlib
comp_msg=b'x4KLJNIMK7042[=11=]6[=11=]011[=11=]4c';
msg = zlib.decompress(comp_msg)
print(msg)
# prints: b`abcdefghijk`