Base64, Hex, procentkodning og Base85: vælg efter transport

Sammenlign byte-overhead, escape og interoperabilitet uden at forveksle tekstkodning med numerisk radix-konvertering.

En kodning er kun nyttig, hvis begge ender er enige om det. Den mindste repræsentation er ikke nødvendigvis det bedste valg, når modtageren har brug for et velkendt alfabet, nyttelasten skal indtastes af en person, eller den omgivende syntaks behandler bestemte tegn specielt. Begynd med modtageprotokollen.

Hex er udførligt, men let at inspicere

Hexadecimal skriver hver byte som to cifre. Bytesekvensen FF 00 41 bliver ff0041. Hvert par har en synlig byte-grænse, som hjælper ved inspektion af filsignaturer, kontrolsummer og protokolpakker. Det fordobler antallet af tegn, men dets lille alfabet passer normalt nemt ind i logfiler og fejlfindingsværktøjer.

Base64 balancerer størrelse og interoperabilitet

Base64 repræsenterer tre bytes med fire tegn. Det er en almindelig tilpasning til binære felter i tekstbaserede formater. Standard Base64 inkluderer plus og skråstreg; Base64URL erstatter disse tegn, når en protokol har brug for et andet alfabet. Regler for polstring og mellemrum skal stadig aftales. Ingen af ​​formerne fortæller modtageren, om de afkodede bytes er tekst, et billede eller komprimeret indhold.

Procentkodning tilhører URL komponenter

Procentkodning skriver en escaped byte som %HH. Det er ikke blot en masseerstatning for Base64. Komponenten bestemmer, hvilke tegn der skal escapes, og teksten skal først kodes som UTF-8. En skråstreg kan adskille stisegmenter, mens et spørgsmålstegn starter en forespørgsel; at behandle hele URL som én uigennemsigtig komponent ændrer dens betydning.

console.log(encodeURIComponent('a+b / 中文'));
// a%2Bb%20%2F%20%E4%B8%AD%E6%96%87

Base85 har brug for en nøjagtig variant

Mange Base85-skemaer repræsenterer fire bytes med fem tegn, men deres alfabeter, afgrænsningstegn og særlige tilfælde er forskellige. ASCII85 og Z85 kan ikke antages at være udskiftelige. Z85 stiller også krav til blokstørrelse. Et alfabet med høj tæthed kan indeholde tegnsætning, der skal escapes igen i det omgivende format, hvilket reducerer den tilsyneladende fordel.

Forveksle ikke disse byte-kodninger med konvertering af heltal 255 mellem talbaser. En fil kan begynde med nul bytes, mens en heltalsrepræsentation kan kassere disse foranstillede nuller. En reversibel fil-codec skal definere, hvordan længde og foranstillede nuller bevares.

Brug Hex til byteinspektion, den specificerede Base64 variant til interoperabel binær transport, URL komponentkodning til URL'er og en specialiseret ordning, når begge parter implementerer den samme kontrakt. Sammenlign ende-til-ende størrelse efter escape og komprimering. RFC 4648 definerer standardfamilierne Base16, Base32 og Base64, inklusive deres særskilte alfabeter.