@filatoff

Почему не каждый раз работает Javascript декомпрессия zlib (библиотека pako)?

Здравствуйте, появилась мозговыносящая проблема.
На стороне сервера я сжимаю данные с помощью библиотеки zlib python.

Приблизительный Python-код:

# -*- coding: utf-8 -*-
import zlib
import base64

str1 = 'илатовф'
print base64.b64encode(zlib.compress(str1))

str2 = 'филатов'
print base64.b64encode(zlib.compress(str2))


На принимающей стороне парсит эти две переменные Javascript. Пользуюсь для декомпресии библиотекой https://github.com/nodeca/pako

В первом случае данные нормально парсятся (на выходе исходное значение из питон-скрипта)
Во втором случае вылетает ошибка
uncaught exception: invalid distance code

Javascript-код:
var b64_text = $("#b64_text").text();
var compress_text = Base64.fromBase64(b64_text);
$("#compress_text").text(compress_text);
var decompress_text = pako.inflate(compress_text, {to: 'string'});
$("#decompress_text").text(decompress_text);


В первом случае получающийся base64 - eJy7sOPC7gsbLjZd2Hdh08UWAE8HCkw= - парсится нормально
Во втором - eJy72HJhx4XdFzZcbLqw78Kmiy0AY9ULoQ== - при парсинге возвращается ошибка

Первый от второго случая отличается лишь тем, что изменен порядок букв (первая буква в исходной строке стала последней). Никак не могу понять, почему так получается. Код перепроверял тысячу раз, механических ошибок быть не должно. Также проверял с другими строками, например, для 'АААФ123123' - работает, для некоторых других нет. Не могу найти систему, то работает, то нет.

Может быть кто-то с таким сталкивался? Или посоветуете как нормально парсить сжатые питоном в base64(zlib()) данные на стороне джаваскрипта?

Есть реализации того же самого на ios и android, там все работает во всех случаях. Такая проблема появилась только при попытке выполнить на джаваскрипте
  • Вопрос задан
  • 2557 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы