Erst beim IBM Großrechner ↗System/360 (1964) wurde ein Byte standardmäßig als 8 Bit definiert. Nun konnte man der Kodiertabelle endlich auch die Kleinbuchstaben und weitere Satzzeichen hinzufügen. Die IBM-eigene, proprietäre Umsetzung nennt sich ↗EBCDIC (1963 entwickelt), während ebenfalls in 1963 US-ASCII als allgemeine Kodier-Empfehlung erschien, die aber nicht zu EBCDIC kompatibel ist. ASCII beschränkte sich auf die Nutzung von 7 Bits (Werte 0 bis 127), weil man das 8. Bit als Paritäts-Bit verwenden wollte, d.h. ein Prüf-Bit zur Erkennung von Übertragungsfehlern bei der Kommunikation mit Druckern und Terminals.
Für den IBM PC (ab 1981) entwickelte IBM die ASCII-basierte Codepage ↗CP437 in 8 Bit, worin auch Umlaute und Akzentzeichen enthalten waren. Später entstanden weitere ASCII-kompatible Codepages für andere Regionen und Sprachen. Ab ↗PC-DOS bzw. MS-DOS 3.3 (1987) konnte der Anwender die Codepage selber in der CONFIG.SYS festlegen.
Zur gleichen Zeit schwenkte auch Microsoft auf ISO 8859 ein, denn seit Windows 3.1 (1992) übernimmt Windows nicht mehr
die eingestellte DOS-Codepage, sondern nutzt "ANSI Code Pages", welche die Umsetzung der ISO-Familie sind, z.B.
entspricht CP1252 (Windows-1252, westeuropäisch) dem ISO-8859-1.
Aber weil Windows eine grafische Oberfläche hat, wollte man erstmals typografische Zeichen mit anbieten,
z.B. diese „ “ Anführungszeichen, die man nun darstellen kann.
Deshalb hat Microsoft die ungenutzten, nicht-druckbaren Steuercodes zwischen 80(hex) und 9F durch
solche typografischen Zeichen ersetzt.
An anderes Problem betrifft den asiatischen Raum mit seinen komplexen Schriftzeichen. Manche Schriftsysteme bestehen aus mehreren tausend Zeichen, die man mengenmäßig gar nicht in 8 Bit (256 Codepunkte) abbilden kann.
1991 wurde nach mehrjähriger Entwicklungszeit die Version 1.0 des Unicode-Standards veröffentlicht, der über 7.000 Zeichen enthielt. Zur Unterstützung des Projekts hatte sich zuvor das Unicode-Konsortium gegründet, mit vielen bekannten Firmen wie Adobe, Apple, Borland, DEC, IBM, Lotus, Microsoft, NeXT, Novell, Sun Microsystems, Symantec, Unisys, WordPerfect, Xerox und anderen.
In den folgenden Jahren wurden immer mehr Sprachen und Zeichen in die Unicode-Tabellen mit aufgenommen, so dass bereits 1993 schon 34.000 Zeichen enthalten waren. Es wurde absehbar, dass man die 64k-Grenze der 16 Bits (UCS-2) überschreiten würde, insbesondere wenn man auch historische Schriftsysteme mit aufnehmen wollte.
Deshalb definierte 1996 die Version 2.0 von Unicode seine Erweiterbarkeit auf 32 Bit. Das bedeutet, dass man die bis dahin gängigsten Zeichen in einem 16-Bit-Word kodieren kann und man nur auf ein zweites Datenwort zurückgreifen braucht, wenn es sich um seltene oder historische Zeichen handelt. Der flexible Speicherbedarf wird im Kodierungsformat UTF-16 umgesetzt, welches das starre UCS-2 ersetzt.
UTF-8 ist sehr speichereffizient. Und in Kombination mit seiner ASCII-Kompatibilität ist es leicht in bestehende Systeme zu integrieren – ein entscheidender Faktor für die Verbreitung auf Linux-Systemen und im Web. Obwohl das Unicode-Konsortium ursprünglich auf UTF-16 als Hauptkodierung setzte, wurde UTF-8 später offiziell in den Unicode-Standard aufgenommen (ab Unicode 3.0, 1999).
Ab Mitte der 2000er Jahre begannen die meisten Linux-Distributionen (Debian, Red Hat, später Ubuntu), UTF-8 standardmäßig zu verwenden. Auch im Internet ist UTF-8 heutzutage die dominierende Zeichenkodierung.
Es gibt aber auch APIs (Schnittstellen), die von ANSI/Codepages auf UTF-16 umgestellt wurden, bevor UTF-8 sich durchsetzte. Dazu gehören die Windows API seit Windows NT (ab 1993), Apple Cocoa API und Core Foundation, und Android (bezüglich Java). UTF-16 wird bei den Programmiersprachen Java, Kotlin, C# (.NET), Delphi (ab 2009) und JavaScript als primärer String-Typ verwendet.