Le standard ASCII (American Standard Code for Information Interchange) comporte 128 codes (7 bits). Quelques valeurs courantes :
ASCII est standardisé en 1968 sous le nom « ANSI X3.4-1968 ». Puis les mises à jour suivent : ANSI X3.4-1977 et finalement ANSI X3.4-1986. On peut enfin le rencontrer sous le nom « US-ASCII ». Il existe en fait des dizaines de variantes de l'ASCII, mais c'est essentiellement la signification des codes de contrôles (caractères non imprimables) qui change.
De son côté, l’Inde a créé sa propre norme ISCII. La norme ISCII a été créée pour assurer la bonne interopérabilité d'une dizaine de jeux de caractères nécessaires pour autant de systèmes d’écriture différents. Elle aurait pu rentrer dans la norme ISO 8859 si l’ISCII avait utilisé la norme ISO 2022 pour basculer d’un jeu à l’autre ; de toute façon une telle intégration mise à jour de l’ISCII pour assurer cette compatibilité aurait plus nuit à l'interopérabilité des écritures indiennes, l’Inde ayant depuis aussi décidé que toute nouvelle extension se ferait via le jeu de caractères universel en développement et activement supporté par l’Inde. Il devenait urgent de définir un jeu de caractères codés dit « universel ».
L’ISO met en place un comité technique, mais tarde à publier sa norme (ISO/IEC 10646), et de plus un autre organisme de normalisation privé (le Consortium Unicode) se met en place sous l’impulsion de plusieurs éditeurs de logiciels : son but est de rendre utilisable le jeu de caractères universel en ajoutant des propriétés, mais dans un premier temps les deux organismes ne se mettent pas d'accord sur le codage de l’hangul (l’alphabet utilisé pour transcrire le coréen). De plus Unicode ne croit pas au début que plus de 65536 caractères seront nécessaires dans un seul plan, le consortium n’ayant au départ comme objectif que de couvrir que les systèmes d'écritures des langues modernes (les plus économiquement rentables), afin de les coder le plus rapidement possible.
La norme Unicode 1.0 voit le jour, mais est en partie incompatible avec la première version de l’ISO 10646, ce qui freine finalement le développement (d’autant que le Consortium Unicode convient rapidement que plus d’un plan sera finalement nécessaire, en observant les travaux de codification des sinogrammes faits par un comité technique spécifique UniHan). Différentes solutions sont envisagées et UTF-16 est expérimenté (mais pas encore standardisé par Unicode, ni approuvé dans la norme ISO/IEC 10646), tandis qu’apparaissent d’autres difficultés techniques d’interopérabilité avec UTF-32 (donc le développement initial a lui aussi connu plusieurs variantes) et UTF-8 (l’ISO/IEC 10646 en normalise une variante légèrement différente de celle définie par le standard Unicode !).
De leur côté, les systèmes d'exploitation et logiciels pour PC ou Mac ne sont pas encore prêts à supporter des jeux de caractères codés sur plusieurs octets, et d’autres variantes de l’ISO 8859 voient le jour, par exemple l’ISO/IEC 8859-14 (nécessaire pour les langues celtiques dont l’irlandais, une des langues officielles de l‘Union européennes), l’ISO/IEC 8859-15 introduit en 1998 pour ajouter le symbole € de l’euro qui allait devenir la monnaie unique d’une douzaine de pays de l’Union européenne, et l’ISO/IEC 8859-16 introduit pour pallier des caractères nécessaires à la transcription correcte du roumain. Ce devait être la dernière variante, mais une dernière variante ISO/IEC 8859-16 sera créée en constatant qu’une des langues officielles d’un futur membre de l’Union européenne (le roumain) ne pouvait pas être correctement transcrite avec ISO/IEC 8859-15 car il y manquait quelques caractères utilisant une virgule souscrite et non une cédille.
Ce sera la dernière partie ajoutée à l’ISO 8859, l’ISO estimant que les besoins pour les autres langues étaient déjà couverts par les autres normes nationales (ISCII en Inde, VISCII au Viet Nâm, GB2312 en Chine, EUC-JP au Japon, etc...) et préférant se consacrer au développement du jeu de caractères universel plutôt que de définir de nouveaux jeux de caractères codés sur 7 ou 8 bits complètement incompatibles avec des jeux de caractères déjà largement déployés et utilisés dans ces pays, les autres pays ayant déjà décidé d’adopter pour leurs langues directement le jeu universel de caractères codés. Cet abandon sera d’autant plus facilité que les normes ISO 10646 et Unicode ont rapidement décidé de fusionner leurs répertoires et y sont parvenu rapidement en produisant une mise à jour majeure pour Unicode 1.1 (rendant obsolète la version 1.0 du standard Unicode incompatible, mais en intégrant la forme de codage UTF-16 en tant que partie intégrante de son standard) et ISO 10646-1 (compatible avec ISO 10646, mais en abandonnant l’idée de supporter à l’avenir plus de 17 plans, et en acceptant d’intégrer et normaliser UTF-16), et en créant des procédures permettant aux deux comités techniques de collaborer et assurer leur coordination. De plus les systèmes d’exploitation, logiciels, polices de caractères et protocoles pour l’Internet ont également évolué pour accepter nativement le jeu universel.
La norme ISO 10646 qui définit le jeu de caractères universel (conjointement avec le standard Unicode lui ajoutant des propriétés facilitant le traitement) a largement réussi son ambition de coder la majorité des systèmes d’écriture utilisés dans le monde (il reste encore à encoder quelques écritures complexes ou mal connues), et conserve son ambition de couvrir toutes les écritures utilisées dans l’histoire de l’humanité (donc y compris les écritures anciennes, ou des caractères rares dans des écritures déjà encodées, ou de nouveaux caractères qui apparaîtraient dans l’usage courant dans certains pays du monde ou qui seraient rendus nécessaires pour certains traitements afin de lever des ambiguïtes).
Le répertoire universel (d’ISO 10646-1 et Unicode) contenait en fin 2009 environ 100 000 caractères (dont plus de la moitié pour les seuls sinogrammes), chacun possédant un unique code entier compris entre 0 et hexadécimal 10FFFF (soit un peu plus de 1,1 million - il existe donc des entiers auxquels aucun caractère n'est associé). Deux autres répertoires fréquemment utilisés, les jeux de caractères codés ASCII (ISO 646, dans sa dernière variante américaine normalisée en 1984) et ISO 8859-1, sont respectivement identiques aux 128 et 256 premiers caractères codés dans ce répertoire universel.