Gzip e Deflate sono algoritmi di compressione che riducono la dimensione dei dati, ma il risultato è binario, non testo. Se questi dati compressi devono viaggiare su un canale pensato per il testo (URL, cookie, campo JSON), vengono anche codificati in Base64 — da qui la coppia "Gzip/Deflate ↔ Base64", usata da strumenti che impacchettano l'intero stato di un documento in un link condivisibile.
Perché il "burocratese" italiano si comprime così bene
I testi burocratici e legali italiani sono noti per le formule ripetute da un paragrafo all'altro — "ai sensi dell'articolo", "fermo restando quanto previsto", "si comunica quanto segue" — e questa ridondanza testuale è esattamente ciò che Gzip sfrutta per sostituire i pattern ricorrenti con riferimenti molto più brevi. Un documento amministrativo verboso spesso si comprime meglio di un testo creativo dove ogni frase è formulata in modo diverso.
L'ordine tipico delle operazioni
- Il testo originale viene compresso con Gzip o Deflate — la dimensione si riduce.
- Il risultato binario compresso viene codificato in Base64 — la dimensione cresce un po', ma i dati diventano testo.
- La stringa risultante viene trasmessa in sicurezza tramite un canale di testo.
La decodifica avviene in ordine inverso: prima Base64 → dati binari, poi decompressione Gzip/Deflate → testo originale.
Casi d'uso comuni
- Impacchettare l'intero stato di un'applicazione in un URL, così un link condiviso riapre esattamente la stessa vista.
- Salvare dati compressi in un cookie o in un campo di testo di un database.
- Debug: decomprimere e leggere contenuti codificati così da un sistema esterno o da un'API.
Gzip contro Deflate «grezzo»
Gzip è di fatto un formato-involucro attorno all'algoritmo Deflate: aggiunge un proprio header e un checksum (CRC-32) sopra i dati compressi. Il Deflate «grezzo» non ha questi byte di servizio, quindi il risultato è leggermente più compatto, ma non può essere decompresso da un'utilità gzip senza indicare esplicitamente che si tratta proprio del formato raw. La confusione tra queste due varianti è una causa comune dell'errore «invalid header» quando si prova a decomprimere i dati.