Informationen zu Codeseiten
 
Home

English Version of this page
 
  Allgemeines
 
Ein normaler Zeichensatz umfaßt nur 256 Zeichen von denen die ersten 32 als Steuerzeichen verwendet werden, so daß nur 224 nutzbar sind. Selbst wenn man sich nur lateinische Schriftzeichen beschränkt, reichen 224 Zeichen nicht aus, um alle auf der Welt benutzen Schriftzeichen unterzubringen. Unter MS-DOS kommen noch die Blockgrafik-Zeichen hinzu.
Als Ausweg wurden verschiedene Zeichensätze entworfen, die die für eine oder mehrere Sprachen benötigten Zeichen enthalten. Gemeinsam sind allen die ersten 127 Zeichen (ASCII).

Beispiele:

Im englischen dürfte es die geringste Anzahl an Sonderzeichen geben - dementsprechend verschwenderisch wurde in der Codepage 437 mit Blockgrafik-Zeichen umgegangen. Aber auch an die deutsche und französiche Sprache wurde gedacht - die Umlaute, das 'ß' und eine Reihe Akzent-Zeichen (é, à usw.) sind enthalten.

Die Codepage 865 für Norwegisch und Dänisch ist mit 437 weitgehend identisch. Lediglich zwei unwichtige Zeichen mußten dem 'ø' und 'Ø' weichen.

In Codepage 850 wurden gegenüber 437 eine Reihe Blockgrafik-Zeichen (insbesondere Übergänge von einfach auf doppelt) zugunsten von Sonderzeichen geopfert, die im mitteleuropäischen Raum benötigt werden, z.B. ã, Ð, Þ. Da deutsche Versionen von DOS und Windows standardmäßig Codepage 850 aktivieren, sieht man recht häufig verunstaltete Blockgrafiken, wie z.B. beim Norton-Commander 2.0, s. Screenshot vom NC2 mit Codepage 850.

Codepage 852 enthält die im slawischen benötigten Zeichen.

In Codepage 862 gibt es 27 hebräische Zeichen. Hier hat man sich offenbar keinerlei Mühe gegeben, unwichtige Zeichen durch hebräische zu ersetzen - es wurden einfach die Zeichen 128 bis 154 genommen, der Rest entspricht Codepage 437. Kleine lateinische Buchstaben mit Accent aigu haben den Kahlschlag zufällig überstanden, andere Akzentzeichen und die deutschen Umlaute sind dahin...

Codepage 866 ist für kyrillisch, für lateinische Akzentzeichen und Umlaute war kein Platz mehr.

Unter deutschem und englischem Windows ist die Codepage 1252 Standard. Die deutschen Umlaute, das 'ß' und Akzentzeichen befinden sich an anderen Postitionen als im DOS-Zeichensatz (Codepage 437 oder 850) - daher die Probleme beim Öffenen von MS-DOS-Texten unter Windows.

Da Windows eine grafische Oberfläche ist, werden hier keine Blockgrafikzeichen benötigt - es ist viel Platz für Sonderzeichen, die unter MS-DOS auf mehrere Codepages verteilt wurden. Deshalb konnten in diesem Text Zeichen aus verschiedensten DOS-Codepages benutzt werden...
Einige Zeichen aus dem slawischen Raum fanden keinen Platz - dafür gibts Codepage 1250. Für kyrillisch gibt es die 1251, für griechisch 1253, hebräisch 1255, arabisch 1256 usw. usf...

Die Liste der existierenden Codepages ist lang, einen kurzen Überblick gibts z.B. hier:
http://www.kostis.net/charsets
Allgemeine Infos zu Zeichen und Zeichensätzen gibt hier (englisch): Characters and encodings
Und hier noch eine hoch informative Seite zum Thema Unicode, die auch das Drumrum ausführlich beschreibt:
http://let.imperia.org/howto/de/unicode/index.html

Nicht weniger informativ ist dieser Abriß der Geschichte der Computer-Zeichen:
http://www.c-plusplus.de/forum/viewtopic-var-t-is-161855.html

Und hier noch ein c't Arikel aus Ausgabe 9/2006: Kleine Geschichte der Zeichensätze

 

 
 
  Codepages unter MS-DOS
 
Unter MS-DOS kommte der Zeichensatz zunächst aus dem BIOS der Grafikkarte, welches üblicherweise Codepage 437 enthält.

Seit Einführung von Grafikkarten nach EGA-Standard, ist der Zeichensatz frei programmierbar. MS-DOS unterstützt auf diese Weise das Laden von Codepages über den Treiber DISPLAY.SYS. Beim deutschen MS-DOS (und ebenso Windows 95/98) wird DISPLAY.SYS standardmäßig in der CONFIG.SYS geladen:

C:\WINDOWS\COMMAND\display.sys con=(ega,,1)
Das eigentliche Laden von Codepage 850 erfolgt durch das MODE Kommando, das vom deutschen MS-DOS und Windows 9x Setup-Programm mit folgenden zwei Zeilen in der AUTOEXEC.BAT eingetragen ist:
mode con codepage prepare=((850) C:\WINDOWS\COMMAND\ega.cpi)
mode con codepage select=850
Damit wird Codepage 850 aktiviert, wobei der Zeichensatz aus der Datei EGA.CPI geladen wird.
In der Praxis macht Codepage 850 oft Probleme mit alten DOS-Programmen, die in CP 437 vorhandene, in CP 850 aber fehlende Blockgrafik-Zeichen benutzen, siehe Screenshot des Norton-Commanders 2.0 mit Codepage 850.

Eigene CPI-Dateien kann man übrigens mit den CPI-Tools von Kosta Kostis erstellen.

Codepage 850 wurde als einzige um das Euro-Zeichen erweitert und wird dann z.T. 858 genannt. Weiter Infos zum Euro unter MS-DOS gibts hier.

 

 
 
  DOS-Codepages unter Windows
 
Unter Windows laufen MS-DOS- und Konsolen-Programme entweder im Fullscreen-Mode oder im Fenster (DOS-Box bzw. Konsolen-Fenster). Für beide muß die Codepage getrennt eingestellt werden, da völlig andere Mechanismen zu Grunde liegen:

Im Fullscreen-Mode schlägt das unter Windows 95/98 liegende MS-DOS voll durch. Hier gilt das Gleiche wie oben unter 'MS-DOS' beschrieben. Unter Windows ME geht das wegen normalerweise fehlender CONFIG.SYS und AUTOEXEC.BAT nicht. Hier stellt man die Codepage mit dem Programm MSCONFIG in der Rubrik 'International' ein.

Unter NT, 2000, XP usw. wird die Codepage für den Bildschirm wie unter DOS mit dem MODE Kommando eingestellt, also z.B.
mode con cp select=437
Das Vorbereiten von Codepages mit dem MODE Kommado entfällt.
Unter XP-SP2 funktionert das merkwürdigerweise nicht in der AUTOEXEC.NT. Was geht, ist z.B. "CHCP 437", aber nur nachdem NLSFUNC geladen wurde, was laut XP-Hilfe wirkungslos sein soll...
Was hilft, ist das Umstellen der Standard-Codepage in der Registry unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage der Wert "OEMCP". Wirksam wird das nach einem Windows-Neustart.
Hier kann man auch eine ANSI-Codepage wie 1252 einstellen - dann hat man keine Probleme wenn Ausgaben von Konsolen-Programmen mit normalen Windows-Programmen weiterverarbeitet werden sollen.
Keinesfalls "Exoten" wie UTF-8 usw. einstellen - damit bootet Windows nicht!

Auswirkung auf die Schrift hat das nur im Fullscreen-Mode oder wenn in der DOS-Box ein Unicode True-Type-Font wie der bei Windows mitgelieferte 'Lucida Console' verwendet wird:
In der DOS-Box stehen verschiedene Schriftarten zur Verfügung: Zum einen der True Type Font 'Lucida Console', zum anderen Bitmap-Fonts mit Namen 'Terminal'. Unter Windows 9x werden letzere 'Bitmap Schriftart' genannt, unter NT, 2000, XP usw. dagegen 'Rasterschriftart'.

'Lucida Console' ist ein Unicode-Font und enthält Zeichen für alle verfügbaren Codepages. Selbst hebräische Zeichen sind enthalten - nur sind die nicht nutzbar, weil entsprechende Verweise auf die Zeichen in der Font-Datei fehlen. mode con cp select=862 tut's also nicht...

Die 'Bitmap Fonts' bzw. 'Rasterfonts' müssen passend zur gewünschten Codepage installiert werden. Für letzters gibt es auf den Windows 9x-CDs das Programm ChangeCP. Das von Windows 95 funktioniert sogar, mit dem von Windows 98 hatte ich keinen Erfolg.
Unter NT, 2000 und XP ist Handarbeit angesagt (MODE CON ist völlig wirkungslos bzgl. des angezeigten Zeichensatzes, wenn ein 'Rasterfont' benutzt wird). Wie man hier die 'Rasterfonts' ändert, steht in der http://www.WinFAQ.de
Einfacher ist es, sich bei meinen Fonts die passende Codepage zu suchen und dann natürlich eine der enthaltenen Schriftgrößen zu benutzen.

Da die Terminal-Fonts den richtigen Zeichensatz quasi zufällig enthalten, kann man damit in verschiedenen DOS-Boxen verschiedene Codepages gleichzeitig zur Anzeige bringen, indem man einfach einen Font mit passender Codepage installiert und in den Einstellungen der DOS-Boxen entsprechende Schriftgrößen einstellt.
Aber Vorsicht: Es sieht zwar so aus als könne Windows mit der mehrfachen Installation der gleichen Schriftgröße umgehen, kann es aber nicht! In der Vorschau wird der richtige Font benutzt, nach dem Bestätigen aber immer der selbe...

 


letzte inhaltliche Änderung: 8.1.2010

Uwe Sieber

Zurück