Le premier codage largement répandu fut l'ASCII. Pour des raisons historiques (les grandes sociétés associées pour mettre au point l'ASCII étaient américaines) et techniques (7 bits disponibles seulement pour coder un caractère), ce codage ne prenait en compte que 27 soit 128 caractères. De ce fait, l'ASCII ne comporte pas les caractères accentués, les cédilles, etc. utilisés par des langues comme le français. Ceci devint vite inadapté et un certain nombre de méthodes ad-hoc furent utilisées d’abord pour le modifier. Ainsi sont apparues des variantes multiples du codage ASCII, adaptées à des langues ou groupes de langues limités.
Pour mettre fin à leur profilération, l'ISO a d’abord créé la norme ISO/IEC 646 formalisant un code normalisé sur 7 bits, où des positions ont été désignées comme invariantes, et quelques unes étaient autorisées à désigner d'autres caractères. Ce système a vite eu ses limites, car il n’était adapté qu'à un petit nombre de langues à écriture latine, et il y manquait de trop nombreux caractères, et ne permettait pas de représenter les écritures non latines.
Différentes solutions ont été envisagées : d’abord définir un système permettant de modifier dynamiquement le jeu de caractère codé utilisé ou le groupe de caractères utilisé dans une écriture complexe. ce système a pu fonctionner pour conserver la compatibilité avec les systèmes de communication restreints à 7 bits, et a donné lieu aux standards comme le Videotex ou les premiers systèmes de Télétexte, et reprenait en fait l’idée déjà en place pour les télex.
De leur côté, les pays asiatiques orientaux ont développé un système hybride utilisant des pages de code multiples, avec différentes représentation binaires selon que le système permettait de stocker les octets sur 8 bits ou sur 7 bits. L’ISO a aussi mis en place une norme destinée à leur interopérabilité, la norme ISO 2022, et pour l’Internet, l’IANA a mis en place un registre permettant de référencer tous ces codages.
Mais avec le développement des protocoles de communication sur Internet basés sur 8 bits, mais aussi pour les nombreux logiciels écrits en langues occidentales, il est apparu plus simple (au départ) de n’avoir à coder les caractères que sur un seul octet. Divers systèmes sont apparus d’abord sur des systèmes incompatibles entre eux, par exemple entre les premiers PC d’IBM et d’Apple (utilisant une puis de nombreuses pages de code), mais aussi les ordinateurs familiaux de divers marques, les imprimantes, le langage Postscript, ou encore les classiques mainframes d’IBM qui utilisaient encore l’EBCDIC sur une partie seulement des valeurs possibles sur 8 bits (avec là aussi de nombreuses variantes nationales mais dont les positions inutilisées depuis l’abandon du codage décimal des anciennes cartes perforées ont été utilisées pour étendre le jeu de caractères), ou encore les premiers systèmes Unix dont un produit par Digital Equipment Corporation (DEC) fera date en étant le vrai premier jeu de caractères « multinational » (le Multinational Character Set ou MCS) pour les langues à écriture latine, une idée qui sera aussi reprise aussi dans le développement de pages de codes nationales pour PC dans les premières versions de MS-DOS (produites par Microsoft et non IBM comme auparavant).
Ce développement a également eu lieu pour plusieurs autres écritures, mais avec de nombreuses variantes même au sein de chaque écriture : Apple popularisera le jeu de caractères codés MacRoman sur ses premiers Macintosh ainsi qu'une dizaine d’autres jeux similaires pour divers groupes de langues ou systèmes d’écriture, tandis que sur les PC subsisteront des pages de codes « multinationales » plus complètes mais encore insuffisantes pour couvrir convenablement les langues de plusieurs pays proches, et même parfois au sein de la même langue (par exemple entre les langues latines d’Europe occidentale, celles d’Europe centrale, et d’autres encore pour répondre aux besoins spécifiques de divers pays).
L’Union soviétique quant à elle, n’a pas accès officiellement aux systèmes d’exploitation développés essentiellement aux États-Unis en raison de l’embargo technologique à la fin de la Guerre froide (et donc pas aux discussions et décisions liées à leur développement) et développe sa propre norme KOI8-R pour l’écriture cyrillique en russe, et parvient à l'imposer en Bulgarie et en ex-Yougoslavie pour l’écriture cyrillique du serbo-croate, ainsi que dans d’autres pays utilisant cette écriture. Pour l’Ukraine elle crée une variante KOI8-U destinée à la langue ukrainienne, au départ utilisés sur les systèmes gouvernementaux bien avant que les PC s’imposent chez les particuliers. Ces jeux de caractères codés auront finalement (et ont encore) plus de succès que les pages de codes pour DOS développées par IBM et Microsoft, même dans les pays non soumis à l’embargo américain et qui commencent à utiliser aussi les PC d’IBM et MS-DOS, ou les jeux de caractères cyrilliques utilisés sur les premiers Macintosh d’Apple (souvent encore trop chers pour ces marchés).
Face à ce désordre qui nuisait à l'interopérabilité, l’ISO a développé une norme mieux étudiée, la norme ISO/IEC 8859, selon les principes des pages de code DOS mais cette fois compatible avec ISO 646 et ISO 2022, mais là encore avec de multiples variantes, adaptées à des groupes de langue plus étendus qu'avec les pages de code pour PC. Une de ces variantes la plus connue est la page de code ISO/IEC 8859-1, développée sur la base du jeu de caractères MCS de DEC qui lui-même était basé sur la variante américaine (ASCII) du jeu ISO 646 normalisé mais seulement pour les langues européennes occidentales (le jeu dit « latin-1 »), les autres variantes étant créées de façon à réutiliser si possible les mêmes positions pour des caractères identiques ou proches lexicographiquement (cela n’a pas toujours été vrai pour toutes les variantes latines ISO/IEC 8859-2, etc. jusqu'à ISO/IEC 8859-13), y compris pour d’autres écritures à alphabet simples (grec, cyrillique, arabe, thaï).
Windows intégrera cependant la norme ISO 8859 en abandonnant les caractères de contrôle supplémentaires codés au delà des 128 premiers caractères ASCII (non nécessaires sous Windows qui abandonne au départ toute idée d'interopérabilité avec EBCDIC), pour y coder quelques autres signes de ponctuation ou lettres manquantes dans certains des volets de la norme ISO 8859 (puis en ajouter quelques autres, notamment le symbole de l’euro en 1998), réduisant ainsi le nombre de variantes nécessaires (notamment pour l’écriture latine).