Paires de substitution dans l'encodage UTF-16 de Java
Le concept de paires de substitution apparaît lorsque vous travaillez avec des caractères Unicode qui ont des points de code élevés au-delà du plage d'unités de code 16 bits utilisées dans l'encodage UTF-16.
Qu'est-ce que une paire de substitution ?
En UTF-16, une paire de substitution est une combinaison de deux unités de code qui représentent ensemble un seul point de code. Lorsqu'un caractère ne peut pas être codé dans une seule unité de code de 16 bits, il est représenté comme suit :
Le substitut haut indique la première moitié du point de code, tandis que le substitut bas indique la seconde moitié. Ensemble, ils forment un point de code de 32 bits.
Encodage et décodage
Le processus d'encodage d'un point de code au-delà de U FFFF dans une paire de substitution est le suivant :
Soustrayez 0x10000 du point de code pour obtenir la valeur de substitution élevée.
Shift la valeur de substitution élevée de 10 bits.
Ajoutez U D800 à la valeur de substitution élevée pour obtenir l'unité de code de substitution élevée.
Prenez les 10 bits restants du point de code pour obtenir la valeur de substitution faible.
Ajoutez U DC00 à la valeur de substitution faible pour obtenir l'unité de code de substitution faible.
Décodage d'un point de code à partir d'un substitut paire implique le processus inverse.
Exemple
Considérons le caractère Unicode U 10400, qui représente le caractère ?. Pour encoder ce caractère dans une paire de substitution :
Soustraire 0x10000 de U 10400 : 0x400
Décaler 0x400 vers la droite de 10 bits : 0x4
Ajouter U D800 à 0x4 : U D804 (unité de code de substitution élevée)
Ajouter U DC00 à 0x3C0 : U DC00 (unité de code de substitution faible)
Le caractère U 10400 est désormais représenté par la paire de substitution U D804 U DC00.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!