Le terme "paire de substitution" désigne un moyen de codage de caractères Unicode avec la haute code-points dans le codage UTF-16 schéma.
Dans l'encodage de caractère Unicode, les caractères sont mappés à des valeurs comprises entre 0 x 0 et 0x10FFFF.
En interne, Java utilise le codage UTF-16 schéma de stocker des chaînes de texte Unicode. En UTF-16, 16 bits (deux octets) code unités sont utilisées. Depuis le 16 bits ne peut contenir la plage de caractères à partir de 0x0 à 0xFFFF, une complexité supplémentaire est utilisé pour stocker des valeurs au-dessus de cette plage (0x10000 à 0x10FFFF). Ceci est fait en utilisant des paires d'unités de code connu comme substituts.
La substitution des unités de code sont en deux gammes connu comme "faible mères porteuses" et "haute mères porteuses", selon qu'ils sont autorisés au début ou à la fin de la deuxième unité de code de la séquence.