Une explication du codage de caractères Unicode
RUNSTUDIO/La banque d'images/Getty Images
Pour qu'un ordinateur puisse stocker du texte et des chiffres que les humains peuvent comprendre, il doit y avoir un code qui transforme personnages en chiffres. La norme Unicode définit un tel code en utilisant un codage de caractères.
La raison pour laquelle le codage des caractères est si important est que chaque appareil peut afficher les mêmes informations. Un schéma de codage de caractères personnalisé peut parfaitement fonctionner sur un ordinateur, mais des problèmes surviendront si vous envoyez le même texte à quelqu'un d'autre. Il ne saura pas de quoi vous parlez s'il ne comprend pas non plus le schéma d'encodage.
Encodage de caractère
Tout ce que fait le codage de caractères est d'attribuer un numéro à chaque caractère pouvant être utilisé. Vous pourriez faire un encodage de caractères dès maintenant.
Par exemple, je pourrais dire que la lettre UN devient le nombre 13, a=14, 1=33, #=123, et ainsi de suite.
C'est là qu'interviennent les normes à l'échelle de l'industrie. Si toute l'industrie informatique utilise le même schéma de codage de caractères, chaque ordinateur peut afficher les mêmes caractères.
Qu'est-ce qu'Unicode ?
ASCII (Code standard américain pour l'échange d'informations) est devenu le premier schéma de codage répandu. Cependant, il est limité à seulement 128 définitions de caractères. C'est bien pour les caractères, les chiffres et la ponctuation anglais les plus courants, mais c'est un peu limitatif pour le reste du monde.
Naturellement, le reste du monde veut également le même schéma d'encodage pour leurs personnages. Cependant, pendant un certain temps, selon l'endroit où vous vous trouviez, il pouvait y avoir un caractère différent affiché pour le même code ASCII.
En fin de compte, les autres parties du monde ont commencé à créer leurs propres schémas de codage, et les choses ont commencé à devenir un peu confuses. Non seulement les schémas de codage étaient de longueurs différentes, mais les programmes devaient déterminer quel schéma de codage ils étaient censés utiliser.
Il est devenu évident qu'un nouveau schéma de codage de caractères était nécessaire, c'est-à-dire lorsque la norme Unicode a été créée. L'objectif d'Unicode est d'unifier tous les différents schémas de codage afin de limiter au maximum la confusion entre les ordinateurs.
Aujourd'hui, la norme Unicode définit des valeurs pour plus de 128 000 caractères et peut être consultée sur le Consortium Unicode . Il a plusieurs formes d'encodage de caractères :
- UN est U+0041
- un est U+0061
- 1 est U+0031
- # est U+0023
Noter: UTF signifie Unité de Transformation Unicode.
Points codés
Un point de code est la valeur donnée à un caractère dans la norme Unicode. Les valeurs selon Unicode sont écrites sous forme de nombres hexadécimaux et ont un préfixe de U+ .
Par exemple, pour encoder les caractères que nous avons vus précédemment :
Ces points de code sont divisés en 17 sections différentes appelées plans, identifiés par des numéros de 0 à 16. Chaque plan contient 65 536 points de code. Le premier plan, 0, contient les caractères les plus couramment utilisés et est connu sous le nom de plan multilingue de base (BMP).
Unités de code
Les schémas de codage sont constitués d'unités de code, qui sont utilisées pour fournir un index indiquant où un caractère est positionné sur un plan.
Considérez UTF-16 comme exemple. Chaque nombre de 16 bits est une unité de code. Les unités de code peuvent être transformées en points de code. Par exemple, le symbole de note plate ♭ a un point de code de U + 1D160 et vit sur le deuxième plan de la norme Unicode (plan idéographique supplémentaire). Il serait codé en utilisant la combinaison des unités de code 16 bits U+D834 et U+DD60.
Pour le BMP, les valeurs des points de code et des unités de code sont identiques. Cela permet un raccourci pour UTF-16 qui économise beaucoup d'espace de stockage. Il n'a besoin d'utiliser qu'un seul nombre de 16 bits pour représenter ces caractères.
Comment Java utilise-t-il Unicode ?
Java a été créé à l'époque où la norme Unicode avait des valeurs définies pour un ensemble de caractères beaucoup plus petit. À l'époque, on pensait que 16 bits seraient plus que suffisants pour encoder tous les caractères nécessaires. Dans cet esprit, Java a été conçu pour utiliser UTF-16. Le type de données char était à l'origine utilisé pour représenter un point de code Unicode 16 bits.
Depuis Java SE v5.0, le caractère représente une unité de code. Cela fait peu de différence pour représenter les caractères qui se trouvent dans le plan multilingue de base car la valeur de l'unité de code est la même que le point de code. Cependant, cela signifie que pour les personnages des autres plans, deux caractères sont nécessaires.
La chose importante à retenir est qu'un seul type de données char ne peut plus représenter tous les caractères Unicode.