Che schema di codifica del testo si fa a utilizzare quando si dispone di dati binari che è necessario inviare su un canale ASCII?

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

  •  21-09-2019
  •  | 
  •  

Domanda

Se si dispone di dati binari che è necessario per codificare, che codifica schema usi?

che so di:

  • Codifica esadecimale . Molto semplice, ma molto verboso, si espande un byte per due.
  • Base 64 . Più comune, non così verbose, si espande tre byte a quattro.
  • Base 85 . Non comune, meno dettagliato di nuovo, si espande quattro byte a cinque.

Ci sono altri schemi di codifica di uso comune? Se sì, quali sono i vantaggi e gli svantaggi?

Modifica : Questo è utile, ad esempio, quando si cerca di memorizzare dati arbitrari in un cookie. I cookie possono solo testo negozio, i dati non arbitrari, quindi è necessario convertirlo in qualche modo, preferibilmente con un modo per convertire indietro. Inoltre, si supponga che si sta utilizzando un server senza stato in modo che non si può salvare lo stato del server e appena messo un identificatore nel biscotto. Naturalmente, se si esegue questa operazione si sarebbe anche bisogno di un modo di verificare che ciò che l'utente sta passando di nuovo a voi è quello che avete passato per l'utente, ad esempio una firma.

Inoltre, poiché l'attuale consenso è che si dovrebbe usare base64 dal momento che è molto diffusa, sarò anche sottolineare che questo è quello che uso ... Sono solo curioso di sapere se qualcuno utilizza qualsiasi altra cosa e, se è così, perché.

Modifica : in caso qualcuno si imbatte in questo, se si desidera utilizzare Base64 per memorizzare i dati in un cookie, è necessario utilizzare una versione modificata Base64 implementazione . Vedere questa risposta per il motivo per cui.

È stato utile?

Soluzione

Per la codifica valori dei cookie, è necessario stare attenti. Vedere questo anziani risposta :

  

Con la versione 0 biscotti, i valori devono   non contengono spazio bianco, staffe,   parentesi, è uguale segni , virgole,   virgolette, barre, domanda   marchi, in segni, i due punti, e   punto e virgola. valori vuoti non possono   si comportano allo stesso modo su tutti i browser.

codifica Base64 può generare simboli = per taluni ingressi, e questo tecnicamente non è consentita nel cookie (versione 0 biscotti, comunque, che sono i più ampiamente supportato). In pratica, ho il sospetto che il = effettivamente funzionare bene, ma forse no.

Vorrei suggerire che per essere assolutamente sicuri che il vostro binario codificato è compatibile cookie, quindi la codifica esadecimale di base è più sicuro (ad esempio in java ).

modifica Come @ Paolo utilmente sottolineato, c'è una versione modificata di Base 64 che è "sicuro URL"(e, presumo, "sicuro cookie"). Utilizzando una versione modificata di un algoritmo standard piuttosto diluisce il suo fascino, si mente.

modifica : @shoosh ha sottolineato che il = viene utilizzato solo per indicare la fine della stringa Base64, così si potrebbe tagliare il =, impostare il cookie, quindi ricollegare di nuovo il = quando è necessario per decodificarlo.

Altri suggerimenti

Base64 vince perché è così comune che non devo preoccuparmi mai sulla rotazione mia encoder / decoder. Non ho eseguito in tutte le applicazioni in cui sono stato preoccupato per il risparmio di larghezza di banda o di spazio per i file in dati binari codificato.

C'era una volta, c'era UTF-7. E 'ufficialmente deprecata, ma funziona ancora come un ACE (Compatible Encoding ASCII). Ora c'è IDN .

Base64 è lo standard de-facto. Utilizzo di ogni altra cosa è in cerca di guai.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top