#python #php #compression #decode #zlib
Вопрос:
Я отправляю данные с Python на PHP-сервер с помощью postman(для целей тестирования). ниже приведен пример кода python:
import json
import zlib
data = {"owner": "test"}
compressed = zlib.compress(json.dumps(data).encode("utf-8"))
print(compressed)
Вывод приведенного выше кода python выглядит следующим образом:
b'xx9cxabV*(xcfK-Rxb2RP*I-.Qxaax05x004x8cx05xc7'
Ниже приведен PHP-код для чтения этих данных:
echo json_decode(zlib_decode($pythonCompressedBinary), TRUE);
Когда я пытаюсь декодировать двоичный файл python в php, он терпит неудачу и выдает ошибку, она рассматривается как ошибка. я вручную вставил эту двоичную строку в свой php-код, и она тоже не удалась. Когда я попытался заменить одинарные кавычки на двойные коды вручную и сохранить их в переменной в php, то они успешно декодируются. Но когда я попытался заменить одинарную кавычку двойной кавычкой, используя str_replace() в php, декодирование все равно не удалось.
Я попытался hexlify() данные в python, а затем hex2bin() в php, затем я смог прочитать эти двоичные данные, и они успешно декодировались. Но я не хочу заниматься шестнадцатеричным процессом. я хочу прочитать двоичный файл напрямую и декодировать его на php.
Пожалуйста, помогите мне, как я могу декодировать эти двоичные сжатые данные python на стороне php.
Комментарии:
1. Я не могу помочь вам с вашей основной проблемой, но я могу сказать вам, что у вас есть байтовый объект , который является результатом преобразования ваших двоичных данных в строку, и это часто является результатом отладки, с которой вы работаете
Ответ №1:
Вы отправляете представление Python compressed
, в отличие от compressed
самого себя. compressed
это последовательность байтов, которую zlib_decode()
ожидает сторона PHP.
Не преобразуйте двоичные байты в строку, используя print
в Python. Отправляйте байты напрямую.