طريقة الضغط بدون فقدان لتقصير السلسلة قبل ترميز BASE64 لجعلها أقصر؟

StackOverflow https://stackoverflow.com/questions/4144704

سؤال

فقط بنيت شبكة ويب صغيرة لمعاينة الوسياسات HTML التي تنشئ عناوين URL: S التي تحتوي على HTML (وجميع CSS و JavaScript المضمّن) في البيانات المشفرة BASE64. المشكلة هي ، عنوان URL: S بسرعة طويلة نوعا ما. ما هي الطريقة القياسية "الفعلي" (يفضل بواسطة جافا سكريبت) لضغط السلسلة أولاً دون فقدان البيانات؟

ملاحظة؛ قرأت عن هوفمان وليميل زيف في المدرسة منذ بعض الوقت ، وأتذكر أنني أستمتع حقًا بـ LZW :)

تعديل:

تم العثور على الحل. يبدو مثل Rawstr => utf8str => lzwstr => base64str هو الطريق للذهاب. أنا أعمل أيضًا على تنفيذ ضغط Huffman بين UTF8 و LZW. المشكلة حتى الآن هي أن الكثير من الساحات تصبح طويلة جدًا عند ترميزها إلى Base64.

هل كانت مفيدة؟

المحلول

الدفع هذا الجواب. يذكر وظائف لضغط/إلغاء الضغط LZW (عبر http://jsolait.net/, ، خاصة http://jsolait.net/browser/trunk/jsolait/lib/codecs.js).

نصائح أخرى

سوف تكافح من أجل الحصول على ضغط كبير على الإطلاق على عنوان URL ، فهي قصيرة جدًا ولا تحتوي على معلومات زائدة كافية للحصول على استفادة كبيرة من خوارزميات نمط Huffman / LZW.

إذا كان لديك قيود على مساحة عناوين URL المحتملة (على سبيل المثال ، تميل جميع المحتوى إلى نفس المجموعة من المجلدات) ، فيمكنك رمز بعض أجزاء عناوين URL للتوسع على العميل - أي الغش.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top