Kodlama

Gzip/Deflate ↔ Base64

Metni Gzip veya Deflate ile sıkıştırıp sonucu Base64 ile kodlama — ve tersi. Compression Streams API üzerinden doğrudan tarayıcıda çalışır.

Base64 by itself doesn't compress anything — quite the opposite, it grows the size by about 33%. To send large text compactly through a text-only channel, it's first compressed with Gzip or Deflate, and only then is the result Base64-encoded.

How to use it

Common uses

Things to keep in mind

Compression only pays off on sufficiently large, compressible text — on short strings the Gzip header overhead plus the Base64 expansion can actually make the result bigger.

Deflate skips Gzip's headers, so its output is more compact, but the format is less self-describing: the receiving side needs to know in advance that it's Deflate specifically.

Bu araç hakkında makale: Gzip + Base64: veriyi metin olarak iletmek için sıkıştırma

Sıkça sorulan sorular

Burada Gzip ve Deflate arasındaki fark nedir?

Gzip, sıkıştırılmış veriyi bir başlık ve sonda bir CRC sağlama toplamıyla sarar; Deflate ise bu sarmalayıcı olmadan ham sıkıştırma akışıdır. Bir formatla sıkıştırılan veri diğeri seçilerek çözülemez — seçilen formatın verinin üretildiği yöntemle eşleştiğinden emin olun.

Sıkıştırılmış veriyi neden Base64 ile kodlamam gerekiyor?

Gzip/Deflate çıktısı ham ikili veridir ve URL, JSON veya yapılandırma dosyaları gibi metin bağlamlarında iyi hayatta kalmaz. Base64 ile kodlamak bu ikili veriyi güvenli, kopyalanabilir ASCII metne dönüştürür.

Araç neden tarayıcımın bunu desteklemediğini söylüyor?

Bu araç, her tarayıcıda veya eski sürümlerde bulunmayan tarayıcı yerel Compression Streams API'sine (CompressionStream/DecompressionStream) dayanır — hiçbir veri sunucuya gönderilmez, ancak destek yoksa araç basitçe çalışamaz.

Açma işlemi bazen neden "invalid header" hatası veriyor?

En yaygın neden, formatın karıştırılmasıdır: veri başlıksız "ham" Deflate olarak sıkıştırılmış, ama kendi başlığını ve CRC-32'sini bekleyen Gzip olarak açılmaya çalışılıyor, ya da tam tersi. Araçtaki formatı değiştirmeyi deneyin.

Sıkıştırma her zaman son boyutu küçültür mü?

Hayır. Çok kısa dizelerde Gzip başlıklarının ek yükü ve Base64'ün getirdiği büyüme, sıkıştırmadan elde edilen kazancı aşabilir — bu yaklaşım yalnızca yeterince büyük ve iyi sıkıştırılabilen metin verileri için mantıklıdır.

Makaleler: Kodlama

Base64: kodlama neden gerekli ve nasıl çalışır

Base64 ikili verileri ASCII metnine nasıl çevirir ve buna gerçekten ne zaman ihtiyaç duyulur.

Base32: Base64'ten farkı ve ne zaman daha kullanışlı

Büyük/küçük harf duyarsız Base32 alfabesi ve Base64'ten daha kullanışlı olduğu durumlar.

URL Encode/Decode: bağlantılarda percent-encoding

Adreslerdeki ve parametrelerdeki özel karakterlerin %XX dizilerine nasıl dönüştüğü.

HTML Entities: özel karakterleri güvenle nasıl gösterirsiniz

< > & karakterlerinin neden escape edilmesi gerektiği ve bunun bozuk işaretlemeyi nasıl önlediği.

JWT: token yapısı ve bir JWT'yi "çözmek" ne anlama gelir

Bir JWT'nin header, payload ve signature bölümleri ile çözmenin imza doğrulamayla aynı şey olmadığı.

Unicode Escape: \uXXXX dizileri ne anlama gelir

JSON ve JS dizelerindeki \u0041 gibi dizilerin nereden geldiği ve ne anlama geldiği.

ROT13 ve Sezar şifresi: basit karakter değişimi

13 harflik kaydırmanın ROT13'ü neden kendi kendine ters yapan bir işlem haline getirdiği ve hâlâ neden kullanıldığı.

Punycode: uluslararasılaştırılmış alan adları DNS'te nasıl çalışır

Latin olmayan karakterler içeren bir alan adının xn-- önekli ASCII formuna nasıl dönüştüğü.

Mors alfabesi: metin nokta ve çizgilere nasıl dönüşür

Harfleri nokta ve çizgilerle kodlama prensibi ve Mors alfabesinin günümüzde nerede kullanıldığı.

Data URI: görselleri doğrudan koda ne zaman gömmeli

Bir Data URI'nin bir dosyanın içeriğini doğrudan HTML veya CSS içine nasıl gömdüğü ve ne zaman buna değdiği.

XML Entities: XML belgelerinde karakter escape etme

Kendileri olmadan belgenin ayrıştırma sırasında bozulduğu beş zorunlu XML entity.