Si vous êtes intéressé par la façon dont les caractères sont stockés, vous pouvez aller sur www.unicode.org et regarder autour de vous. En haut de leur page principale se trouve un lien "Graphiques" qui vous montre tous les codes de caractères disponibles dans Unicode.
Au total, un peu plus d'un million de codes sont disponibles en Unicode (tous ne sont pas utilisés). Un octet peut contenir 256 valeurs différentes, vous aurez donc besoin de trois octets si vous souhaitez stocker tous les codes Unicode possibles.
Au lieu de cela, Unicode est généralement stocké dans le codage "UTF-8" qui utilise moins d'octets pour certains caractères et plus pour d'autres. Les 128 premières valeurs de code sont stockées dans un seul octet, jusqu'aux 2048 premières valeurs de code sont stockées dans deux octets, jusqu'à 65536 sont stockées dans trois octets et les autres prennent quatre octets. Cela a été organisé de sorte que les valeurs de code qui sont utilisées le plus souvent prennent moins de place. AZ, az, 0-9 et! @ $% ^ & * () - [} {}; ': "|,. / <>? Et certains que j'ai oublié prennent un octet; presque tout l'anglais, 98% de L'allemand et le français (juste deviner) peuvent être stockés dans un octet par caractère, et ce sont les caractères les plus utilisés. Le cyrillique, le grec, l'hébreu, l'arabe et certains autres utilisent deux octets par caractère. Les langues indiennes, la plupart du chinois, du japonais , Coréen, thaï, des tonnes de symboles mathématiques, peut être écrit en trois octets par caractère. Les choses rares (si jamais vous voulez écrire du texte en linéaire A ou linéaire B, Emojis) prennent quatre octets.
Un autre codage est UTF-16. Tout ce qui prend 1, 2 ou 3 octets en UTF-8 prend deux octets en UTF-16. C'est un avantage si vous avez du texte chinois ou japonais avec très peu de caractères latins entre les deux.
À propos des raisons de la conception UTF-8: il présente plusieurs avantages par rapport aux autres conceptions. Elles sont:
Compatibilité avec les caractères US-ASCII
Compacité raisonnable
Auto-synchronisation: cela signifie que si vous disposez d'une partie d'une séquence d'octets qui sont des caractères dans le codage UTF-8, vous pouvez savoir où commence le caractère. Dans certains encodages, xy et yx peuvent être des encodages valides de caractères, donc si on vous donne une partie d'une séquence ... xyxyxyxyxyxy ... vous ne pouvez pas savoir quels caractères vous avez.
Exactitude du tri: Si vous triez des chaînes contenant des caractères codés UTF-8 par leurs valeurs d'octet, elles sont automatiquement triées correctement en fonction de leurs valeurs Unicode.
Compatible avec le code à un octet: La plupart du code qui suppose des valeurs à un octet fonctionne automatiquement correctement avec les caractères codés UTF-8.
Plus les raisons que j'ai oubliées.