Una codifica è una mappatura tra byte e caratteri da un set di caratteri, quindi sarà utile discutere e comprendere la differenza tra byte e caratteri .
Pensa ai byte come numeri compresi tra 0 e 255, mentre i caratteri sono cose astratte come "a", "1", "$" e "Ä". L'insieme di tutti i caratteri disponibili è chiamato insieme di caratteri .
Ogni personaggio ha una sequenza di uno o più byte che vengono usati per rappresentarlo; tuttavia, il numero esatto e il valore dei byte dipende dalla codifica utilizzata e ci sono molte codifiche diverse.
La maggior parte delle codifiche si basano su un vecchio set di caratteri e codifica chiamata ASCII che è un singolo byte per carattere (in realtà solo 7 bit) e contiene 128 caratteri inclusi molti dei caratteri comuni utilizzati nell'inglese americano.
Ad esempio, qui ci sono 6 caratteri nel set di caratteri ASCII che sono rappresentati dai valori da 60 a 65.
Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║ Character ║
╠══════╬══════════════║
║ 60 ║ < ║
║ 61 ║ = ║
║ 62 ║ > ║
║ 63 ║ ? ║
║ 64 ║ @ ║
║ 65 ║ A ║
╚══════╩══════════════╝
Nel set ASCII completo, il valore più basso utilizzato è zero e il più alto è 127 (entrambi sono caratteri di controllo nascosti).
Tuttavia, una volta che inizi a utilizzare più caratteri di quelli forniti dall'ASCII di base (ad esempio lettere con accenti, simboli di valuta, simboli grafici, ecc.), ASCII non è adatto e hai bisogno di qualcosa di più ampio. Sono necessari più caratteri (un set di caratteri diverso) e una codifica diversa poiché 128 caratteri non sono sufficienti per contenere tutti i caratteri. Alcune codifiche offrono un byte (256 caratteri) o fino a sei byte.
Nel tempo sono state create molte codifiche. Nel mondo Windows, esiste CP1252 o ISO-8859-1, mentre gli utenti Linux tendono a preferire UTF-8. Java utilizza UTF-16 in modo nativo.
Una sequenza di valori byte per un carattere in una codifica potrebbe rappresentare un carattere completamente diverso in un'altra codifica o potrebbe anche non essere valida.
Ad esempio, in ISO 8859-1 , â è rappresentato da un byte di valore 226
, mentre in UTF-8 è due byte: 195, 162
. Tuttavia, in ISO 8859-1 , 195, 162
sarebbero due caratteri, Ã, ¢ .
Quando i computer memorizzano i dati sui caratteri internamente o li trasmettono a un altro sistema, archiviano o inviano byte. Immagina che un sistema che apre un file o riceva un messaggio veda i byte 195, 162
. Come fa a sapere quali personaggi sono?
Affinché il sistema possa interpretare quei byte come caratteri effettivi (e quindi visualizzarli o convertirli in un'altra codifica), è necessario conoscere la codifica utilizzata. Ecco perché la codifica appare nelle intestazioni XML o può essere specificata in un editor di testo. Indica al sistema la mappatura tra byte e caratteri.