*
Mal wieder eine zu lange Antwort geschrieben. Die wichtigste Punkt sind hervorgehoben.
@Yadgar sagte in Umlaute in C:
...das heißt, C90 kennt noch keine wide chars?
Es gab damals noch keine einheitlich Norm, wie man Zeichen außerhalb der Plattform spezifischen 8Bit Zeichensätzen umgeht. Jede Plattform hat damals ihr eigenes Süppchen gekocht. Selbst US-ASCII ist nicht die einzige Norm für eine US-Kodierung, denn es gibt das ältere EBCDIC, was durch IBMs Mainframes starke Verbreitung fand. Typisch für die Heim-/Personalcompurer der 1980er ist, dass die oberen 128 Kodierungen für graphische Symbole bzw. Sonderzeichen genutzt wurden: siehe Codepage 437, Codepage 850, PETSCII, … .
In den späten 1970er/frühen 1980er hat DEC in den Terminals bereits einen Vorläufer von Latin-1 unterstützt. Die DEC Terminals waren der de facto Standard, den alle anderen kopiert haben. Bei einigen Modellen gab es noch zusätzliche Kodierungen (andere Latin Varianten und immer eine Grafikkodierung). Des erklärt auch, weshalb unter UNIX die Grafikzeichen nicht in den eigentlichen Zeichensatz kodiert wurden. Wenn Du auf dem Terminal z.B. Rahmen zeichnen willst, schaltete man auf den Grafikzeichensatz um. Passende Erklärungen dazu kann man in der Beschreibung der curses Library finden, oder man nutzt nun wcurses und gibt die Codes für die Grafiksymbole aus Unicode an.
Nach längerem Anlauf wurde 1987 dann ISO 8859-1 verabschiedet. UNIX setzt seitdem auf ISO 8859-1 und ISO 6429, die beide zusammen das ältere US-ASCII erweitern, das ist auch seitdem die Standard C Kodierung von UNIX, auf die das System bei Fehler zurückfällt. Die anderen ISO 8859 Versionen kamen etwas danach und definieren für alle europäischen Sprachen, Hebräisch, Arabisch (vereinfacht), Thai, … die Kodierungen. Für CJK gab es schon wchar_t, aber in der Literatur aus dieser Zeit ist das Thema mit einigen kurzen Sätzen abgehandelt. Wahrscheinlich muss man dazu die japanische Literatur nutzen, um das nachlesen zu können.
1991 kam die erste Unicode Version heraus. Erst ab diesem Zeitpunkt war ein einheitlicher Weg für alle Plattformen absehbar, so dass in den Programmiersprachen auch Verfahren eingeführt wurden mit Unicode umzugehen. Der wichtige Punkt ist, dass die untersten 8Bit von Unicode der ISO 8859-1/ISO 6429 Kodierung entsprechen.
Nachtrag:
Erst in C90 wurde wchar_t eingeführt. Davor war das auch proprietär.