Метод сжатия без потерь для сокращения строки перед кодировкой base64, чтобы сделать ее короче? - PullRequest
11 голосов
/ 10 ноября 2010

только что создал небольшое веб-приложение для предварительного просмотра HTML-документов, которые генерируют URL-адреса, содержащие HTML (и все встроенные CSS и Javascript) в данных, закодированных в base64. Проблема в том, что URL-адреса быстро становятся довольно длинными. Каков стандартный метод де-факто (предпочтительно Javascript ), чтобы сначала сжать строку без потери данных?

PS; Я читал о Хаффмане и Лемпеле-Зиве в школе некоторое время назад, и я помню, что мне действительно нравилось LZW:)

EDIT:

Решение найдено; похоже, что rawStr => utf8Str => lzwStr => base64Str это путь. Я продолжаю работать над реализацией сжатия Хаффмана между utf8 и lzw. Пока проблема в том, что слишком много символов становятся очень длинными при кодировании в base64.

Ответы [ 2 ]

5 голосов
/ 10 ноября 2010

Проверьте этот ответ .В нем упоминаются функции сжатия / распаковки LZW (через http://jsolait.net/,, в частности http://jsolait.net/browser/trunk/jsolait/lib/codecs.js).

1 голос
/ 10 ноября 2010

Вы будете изо всех сил пытаться получить очень большое сжатие URL-адреса, они слишком короткие и не содержат достаточно избыточной информации, чтобы получить большую выгоду от алгоритмов стиля Хаффмана / LZW.

Если у вас есть ограничения на пространство возможных URL-адресов (например, все содержимое, как правило, находится в одном и том же наборе папок), вы можете жестко закодировать некоторые части URL-адресов для расширения на клиенте - т.е. чит.

...