Un encodage est un mappage entre les octets et les caractères d'un jeu de caractères, il sera donc utile de discuter et de comprendre la différence entre les octets et les caractères .
Considérez les octets comme des nombres entre 0 et 255, alors que les caractères sont des choses abstraites comme "a", "1", "$" et "Ä". L'ensemble de tous les caractères disponibles est appelé un jeu de caractères .
Chaque caractère a une séquence d'un ou plusieurs octets qui sont utilisés pour le représenter; cependant, le nombre et la valeur exacts des octets dépendent du codage utilisé et il existe de nombreux codages différents.
La plupart des encodages sont basés sur un ancien jeu de caractères et un encodage appelés ASCII qui est un octet par caractère (en fait, seulement 7 bits) et contient 128 caractères, y compris un grand nombre des caractères courants utilisés en anglais américain.
Par exemple, voici 6 caractères dans le jeu de caractères ASCII qui sont représentés par les valeurs 60 à 65.
Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║ Character ║
╠══════╬══════════════║
║ 60 ║ < ║
║ 61 ║ = ║
║ 62 ║ > ║
║ 63 ║ ? ║
║ 64 ║ @ ║
║ 65 ║ A ║
╚══════╩══════════════╝
Dans l'ensemble ASCII complet, la valeur la plus basse utilisée est zéro et la plus élevée est 127 (les deux sont des caractères de contrôle masqués).
Cependant, une fois que vous commencez à avoir besoin de plus de caractères que l'ASCII de base fournit (par exemple, des lettres avec des accents, des symboles monétaires, des symboles graphiques, etc.), l'ASCII ne convient pas et vous avez besoin de quelque chose de plus complet. Vous avez besoin de plus de caractères (un jeu de caractères différent) et vous avez besoin d'un codage différent car 128 caractères ne suffisent pas pour contenir tous les caractères. Certains codages offrent un octet (256 caractères) ou jusqu'à six octets.
Au fil du temps, de nombreux encodages ont été créés. Dans le monde Windows, il existe CP1252, ou ISO-8859-1, alors que les utilisateurs de Linux ont tendance à privilégier UTF-8. Java utilise UTF-16 de manière native.
Une séquence de valeurs d'octet pour un caractère dans un codage peut représenter un caractère complètement différent dans un autre codage, ou peut même être invalide.
Par exemple, dans la norme ISO 8859-1 , â est représenté par un octet de valeur 226
, alors que dans UTF-8 , il est deux octets: 195, 162
. Cependant, dans ISO 8859-1 , il y 195, 162
aurait deux caractères, Ã, ¢ .
Lorsque les ordinateurs stockent des données sur les caractères en interne ou les transmettent à un autre système, ils stockent ou envoient des octets. Imaginez qu'un système ouvrant un fichier ou recevant un message voit les octets195, 162
. Comment sait-il de quels personnages il s'agit?
Pour que le système interprète ces octets comme des caractères réels (et ainsi les affiche ou les convertit en un autre codage), il doit connaître le codage utilisé. C'est pourquoi l'encodage apparaît dans les en-têtes XML ou peut être spécifié dans un éditeur de texte. Il indique au système le mappage entre les octets et les caractères.