Здравствуйте, появилась мозговыносящая проблема.
На стороне сервера я сжимаю данные с помощью библиотеки 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, там все работает во всех случаях. Такая проблема появилась только при попытке выполнить на джаваскрипте