ISO/CEI 10646 définit plusieurs formes de codage de caractères pour l'Universal Character Set. La plus simple, UCS-2, assigne une valeur de code unique, c'est-à-dire une séquence d'un ou plusieurs nombres unique, entre 0 et 65.535 pour chaque caractère. Ainsi, exactement deux octets, soit un mot de 16 bits, permettent de représenter la valeur de tout point de code. En conséquence, UCS-2 permet une représentation binaire de chaque point de code du Plan Multilingue de Base, le PMB, à la condition que le point de code soit assigné, c'est-à-dire qu'il représente effectivement un caractère. Il en découle également qu'UCS-2 ne permet pas de représenter les points de code extérieurs au PMB.
Le premier amendement de l'édition originale de l'UCS définit UTF-16, une extension d'UCS-2, pour représenter les points de code extérieurs au PMB. Il existe dans le PMB une plage située dans la zone spéciale (S Zone) dont les points de code ne sont pas assignés. UCS-2 interdit l'utilisation de valeurs de code pour ces points de code, mais UTF-16 permet leur utilisation par paires afin de désigner les caractères extérieurs au PMB.
Cette plage est subdivisée en une partie haute et une partie basse, où chaque paire est constituée d'un "élément RC" de chacune de ces zones. Un élément RC est une séquence de deux octets faite d'un octet R et d'un octet C obtenus depuis la séquence de 4 octets qui correspond à une cellule dans l'espace de codage d'un jeu de codage de caractères.
Unicode a aussi adopté UTF-16, mais en terminologie Unicode, les éléments de zone moitié-haute sont appelées "demi-codets hauts d'indirection" et ceux de la moitié basse "demi-codets bas d'indirection". On rencontre aussi le terme de seizet d'indirection.
Un autre codage, UCS-4, utilise une seule valeur entre 0x00 et (théoriquement) 0x7FFFFFFF pour chaque caractère (bien que l'UCS s'arrête à 0x10FFFF et ISO/CEI 10646 a établi que tous les assignements futurs de caractères prendront place dans cette zone). UCS-4 permet la représentation de chaque valeur par exactement quatre octets (mots de 32-bits). UCS-4 permet donc une représentation binaire de chaque code point de l'UCS, y compris ceux en dehors du PMB. Comme en UCS-2, chaque caractère codé a une taille fixe en octets, qui fait qu'il est simple à manipuler, mais bien sûr, il nécessite deux fois plus de mémoire que l'UCS-2.
Occasionnellement, les articles sur Unicode mélangent les concepts UCS-2 et "UCS-16". UCS-16 n'existe pas ; les auteurs qui font cette erreur essayent de parler d'UCS-2 ou d'UTF-16.
ISO 10646, une référence générale, informelle pour la famille de standards ISO/CEI 10646, est acceptable dans la plupart des cas. Et même s'il s'agit d'un standard séparé, le terme Unicode est utilisé aussi fréquemment, informellement, à propos de l'UCS. Cependant, une référence normative à l'UCS tout comme une publication devrait se référer à une partie et une version particulière de l'une de ces deux normes sous la forme ISO/CEI 10646-{partie}:{année} ; par exemple : ISO/CEI 10646-1:1993.
ISO 10646 et Unicode ont un répertoire identique et numérotent les mêmes caractères avec les mêmes nombres. La différence entre les deux est qu'Unicode ajoute des règles et spécifications au standard ISO 10646. ISO 10646 est une simple table de caractères, une extension des standards précédents comme ISO 8859. En contraste, Unicode ajoute des règles de collation, normalisation de formes, et d'algorithme bidirectional pour les scripts comme l'hébreu et l'arabe. Pour l'interopérabilité entre les plates-formes, spécialement quand les scripts bidirectional sont utilisés, il ne suffit pas de supporter l'ISO 10646 ; Unicode doit être implémenté.
Certaines applications supportent les caractères ISO 10646 mais ne supportent pas complètement Unicode. Une de celles-là est xterm, qui peut correctement afficher tous les caractères ISO 10646 qui ont une carte de bijection character-to-glyph et un seul sens d'écriture. Il peut gérer certaines marques de combinaison par méthodes de simple overstriking, mais ne peut afficher l'hébreu (bidirectionnel), le devanagari (un caractère pour plusieurs glyphes) ou l'arabe (deux fonctionnalités). La plupart des applications GUI utilisent des fonctionnalités de tracer de bibliothèques standard qui gèrent de tels scripts, bien que les applications elles-mêmes ne les traitent toujours pas exactement correctement. Par exemple, sélectionner du texte dans certains scripts sous Mozilla Firefox fait que le texte saute autour.