Z E I C H E N
=============
0. Wichtige Unterscheidungen
----------------------------
0.1. Zeichensatz
----------------
* vereinbarte/definierte Menge von Zeichen (hat ansich mit EDV
gar nichts zu tun), z.B: Zeichenvorrat eines Fernschreibers,
des Morsealphabets, lateinische Großbuchstaben ohne Umlaute
(26 Zeichen), Verkehrszeichen, Bettlerzinken, arabische
Ziffern.
0.2. Zeichenkodierung
---------------------
* Art der Umsetzung (eines definierten Zeichensatzes) v.a. für
die Maschinen der Datenverarbeitung/Datenübertragung.
ALSO
* Zeichensätze können auf verschiedene Weise kodiert sein.
ABER AUCH
* Selbe Kodierungsmethoden können ganz unterschiedliche
Zeichensätze (kyrillische, tibetische, indische) behandeln.
0.3. Untermengen
----------------
* von Zeichensätzen gibt es Untermengen. Beispiele:
* Satz lateinische Schulschreibschrift
(Norm der deutschen Kultusminister)
Untermenge: Kleinbuchstaben
* gesetzliche Verkehrszeichen
Untermenge: Gebotszeichen
* Zeichensatz für ein Gerät/Rechner
Untermenge: Leerschritt- oder "whitespace"-Zeichen,
Zeichen, die keine erkennbare Ausgabe, sondern nur
einen leeren Zeichenschritt bewirken.
1. Zeichensätze für Rechner
---------------------------
* Diese sind in Normen festgelegt, meistens halten sich
die Firmen auch daran, manche braten aber auch eine
Extrawurst um mehr vom Verbraucher abgreifen zu können.
* Sie sind eingeteilt in zwei Weisen:
a) zu UMFANGSEBENEN = Anzahl der Zeichen je Satz
= die 3 Ebenen: ASCII, ISO, UTF
=========================
b) nach SCHRIFTKULTUREN = Art der Zeichen
hier zu den 2 Systemen:
Unicode und Sonstige technikgeschichtsbedingte.
====================
1.2. Kodierung der Zeichensätze für Rechner
-------------------------------------------
* Definition einer Zeichenkodierung setzt zunächst immer
eine Vereinbarung über den der Kodierung unterworfenen
Zeichensatz voraus, also
a) zuerst zugeordneter Zeichensatz
= Umfangsebene & Schriftkultur, siehe oben 1.a+b)
============================
b) dann dessen Art der Kodierung , siehe unten 1.2.0.
=================
(NICHT Art der Zeichen = Schriftkultur)
c) ferner: Methoden zur Kodierung von Text, siehe 1.3.
1.2.0. Art der Kodierung b)
------------------------
* Für das Einzelzeichen: Vereinbarte Umsetzung diese gedachten
Zeichens von erkennbarer Pixeldarstellung oder vereinbarter
Ersatzumschreibung in eine verbindliche Binärdarstellung für
die Rechner.
* z.B. gedachter Buchstabe "A", eine Auswahl:
auf dem Monitor erkennbare Pixeldarstellung = A
eine eher unformelle Ersatzumschreibung für DOS/UNIX = "ascii 65"
ein formelle Ersatzumschreibung nach Unicode in HTML = "A"
Darstellung im Assemblercode = "65" (Hexadezimalzahl)
Darstellung in der Maschine konkret = "01100101"b (Bitebene)
die "Art der Kodierung" interessiert nun folgend nicht weiter
1.2.1. Festlegungen von Geräteherstellern
------------------------------------------
zu zugeordneten Zeichensätzen 1.2.a)
diese waren historisch bedingt zugleich auch die ersten Kodierungs-
normen überhaupt und reichen in Teilen bis in die neusten Normen
hinein; daraus erklärt sich schon vieles. Man muß wissen:
a) Zeichenkodierungen der NachrichtenVERARBEITUNG, darunter
* ASCII American Standart of Civil Informatic Industry
* EBCDIC ( Codierung von IBM (außer PC) und Großrechnern,
für höhere Verarbeitungsgeschwindigkeiten etc.)
* BCD Binary Coded Decimal (Zahlenverarbeitung speziell
in Taschenrechnern etc.)
b) Zeichencodierungen bei der NachrichtenÜBERTRAGUNG!
(oft redundanter Kode, Bit-Fehlererkennung/-behebung)
* internationale Standarts (IECC) für Fernschreibverkehr
(Morse gehört auch dazu)
* russische & deutsche Fernschreibkodes
* Bahnsicherungstechnik, Satellitenübertragungen u.s.w.
ursprünglich waren kaum Unterschiede zwischen a) und b)
und nun fließender Übergang zu:
1.2.2. weitere, international genormte Festlegungen
----------------------------------------------------
* Einteilung nach Zeichensatzumfang, zugleich historische
Abfolge
* ASCII-Ebene
* ISO-Ebene
* UTF-Ebene
* Besondere Schwierigkeit: DIESELBE Kodierung eines konkreten
Zeichensatzes wird durch Nachlässigkeit von Autoren und
Firmen i.d.R. unterschiedlich, meist nur ähnlich bezeichnet!
Das ist schlimm. Es gibt dazu eine Vergleichsliste bei www.w3.org.
1.2.2.1. ASCII-Zeichensatzkodierungen
-------------------------------------
a) * URZELLE = die ersten 127 Zeichen des ASCII-Codes, welche
in den USA auch der Fernschreibkode für 5-Lochmaschinen sind.
Ein "7bit"-Kode.
für Browser steht z.B. in html-Dateien dann:
* Gelten bis dato in alle höchsten Internetnormen hinein!
Üblicher Klartext in HTML-Quelltexten und mit Einschränkung
des Zeilenvorschub-Zeichens auch noch für XML.
* Namensvariationen: ASCII-127 = ASCII-128 = US-ASCII = ......
* Dieser Teil a) der ASCII-Zeichensatzkodierung ist auch Teil des
Unicode-Systems.
1.2.2.1.1. Länderspezifische ASCII-127 für ältere PCs (XTs)
-----------------------------------------------------------
* Um in einer 7-bit-Zeichensatzkodierung mit beschränktem
Zeichenumfang noch länderspezifische Sonderzeichen
wie Umlaute berücksichtigen zu können, wurden einige
(ca. halbes Dutzend) Sonderzeichen (wie geschweifte
Klammern, Linksschrägstrich etc.) durch Umlaute u.s.w.
ausgetauscht.
Diese länderspezifischen 7-bit-ASCII-Codes waren
Notlösungen v.a. für die Druckerhersteller bis Ende
der 1980ziger Jahre. Siehe jeweils Druckerhandbücher
(... sofern es noch welche gibt ...).
1.2.2.1.2. Länderspezifische ASCII-256 für IBM-komptible PCs
------------------------------------------------------------
b) * ASCII-256, dies ist der "DOS-ASCII"-Zeichensatz oder
IBM-ASCII-Zeichensatz, oft auch als PC8-Zeichensatz
oder "roman" bezeichnet.
= quasi entgültige "Internationalisierung" des
US-ASCII-5-Lochsystems
= hier dann ein "8bit-Kode"
* Die meisten ASCII-256 Zeichensätze haben den ASCII-127 als
eindeutige Untermenge.
für nur wenige Browser, z.B. der deutsche ASCII-256:
der Ami dazu, der aber AUCH Umlaute kann (z.B. für Motörhead):
Daher: "CP-850" ist UNGLEICH "ISO Latin-1" ist ungleich "CP-437"
c) Es gibt noch weitere ASCII-256 Zeichensätze ...
Wichtig & Merksatz:
b) und c) sind nicht mehr Teil des Unicode-Schriftkultursystems
gleichwohl aber die Urzelle ASCII-127
1.2.2.2. ISO-Zeichensatzkodierungen = muss man wissen!
-----------------------------------
* von European Computer Manufacturer's Asscociation = ECMA
= Gegenstück zur ignoranten ASCII
* v.a. iso-8859-Familie für alle lateinische & kyrillische Schriften
des Planeten (die freundlich bedacht wurden).
* wichtig davon: iso-8859-1 = Western Europe Latin 1
iso-8859-5 = Kyrillisch
iso-8859-6 = Arabisch
iso-2022-JP = Japanisch
iso-8859-15 = Europäisch mit Euro-Zeichen!
* derzeit aktuelle (und fehlerfreie!) Norm im Internet
1.2.2.2.1. einige weitere Zeichensatzkodierungen der ISO-Ebene
--------------------------------------------------------------
* Micro$oft hat den ASCII-256 nicht für Windows übernommen
und sich eigene 8bit-"256"-Zeichensätze für Windows 3.0
gebraten, diese mussten dann auch Teil der ISO-Ebene
anerkannt werden. Z.B. als html-tag dann:
weitere iso-Zeichensatzkodierungen, leider oft nicht verbreitet worden:
* Chinesischer Zeichensatz
* Deutscher Zeichensatz
* Dänischer Zeichensatz
* Altgriechischer Zeichensatz
u.s.w.
Tibetischer Zeichensatz? Nicht dass ich wüsste ......
Unter http://www.iana.org findet man noch viele viele ......
1.2.2.2 Zeichensätze der UTF-Umfangsebene
------------------------------------------
* Hier v.a. eine Betrachung für das Weltnetz. Mit UTF soll
nun zukünftig alles abgedeckt sein, v.a. asiatische Sprachen.
* Texterfassung mit UTF-Zeichensätze praktisch nur mit
speziellen neueren Editoren/Textverarbeitungsprogrammen
möglich. (z.B. yudit/Linux) Es gab 2008 erstaunlich wenige.
Bis 2011 sind kaum welche hinzugekommen.
* Für eine korrekte Seitendarstellung im Browser sind
3 Angaben relevant:
a) Angabe (optional) im http-header, der vom
Server an den lokalen Rechner gesendet wird.
b) Angabe (optional) im BOM (bit order mark), ein
kleiner Bereich am Anfang der Seitendatei, egal
ob via Weltnetz oder sonst für irgendwas.
c) Angabe (optional) in einem Metatag einer Datei
speziell für Weltnetzversand.
d) Unterlassungsannahme (einstellbar) eines Browsers
1.2.2.3. UTF-Differenzen
------------------------
Es gibt: utf8, utf-8, utf-16, utf-32
* utf-32 kodiert jedes Zeichen IMMER mit 4 Bytes, d.h.
jede Datei wird 4-mal so groß wie mit iso-Kodierung.
* bei utf-16 und utf-8 besteht kein Zusammenhang mehr
zwischen der Anzahl der Bytes und der Zeichen eines
Dokuments.
* utf-16 kodiert jedes Zeichen mit 2 Bytes, manchmal
aber auch mit mehr! Gelegentlich von Micro$oft be-
vorzugt.
* utf-8 kodiert jedes Zeichen mit 1 bis 4 Bytes, wobei
die Untermenge ASCII-127 nur mit 1 Byte kodiert ist.
so wie bislang auch bei der iso-Norm. Üblich unter
Linux.
* utf8 (ohne Bindestrich) ist eine Variante von utf-8,
die mehrere mögliche Kodierungen für selbe Zeichen
zulässt. (Wer immer sich das hat einfallen lassen,
gehört dafür jeden Tag in der Hölle ausgepeitscht!)
1.3. Methoden zur Kodierung
---------------------------
1.3.0. Beschreibung der Kodierungsteile
---------------------------------------
1.3.0.0. unterste Schicht S0 = hardcore
---------------------------------------
* hier sind alle Zeichen der Datei so wie sie sind
zu erfassen und im Editor dargestellt. So ein
Editor wird meist fälschlich als "ASCII-Editor"
bezeichnet. Alle Zeichen der Umfangsebene UND
Schriftkultur sind zugänglich. Ein "HEX-Editor"
macht dasselbe und ist in der Bezeichnung
treffender, vgl. 1.2.0
* Also Zeilenumbrüche, Seitenumbrüche gehören
auch zur Schriftkultur! Sie sind eine Untermenge
der Umfangsebene.
* Dass manche Betriebs- und Druckersysteme ausgehend
von einer bestimmten Schriftkultur schon Teile
davon quasi "eingebaut" haben (z.B. Zeilenvorschub
beim Mac) ist ein anderes Kapitel ...
Zeilenumbruch = Zeilenvorschub + Rücksetzung zum
Zeilenanfang. Bei Worttrennung schön relevant.
(In der arabischen Schriftkultur ist der Zeilenanfang
rechts, in der lateinischen links, in der chinesischen
"unlateinisiert" sind ansich Spalten- und Zeilenumbrüche
verstauscht, d.h. sie haben senkrechte "Zeilen" und waagrechte
"Spalten", da Chinesen von oben nach unten schreiben.)
1.3.0.1. Formatierungs-Schicht S1 = Formatierung
------------------------------------------------
* und weil innerhalb eines Systems/Betriebssystems
der Ärger mit der Textformatierung behoben sein
sollte, gibt es Erfassungsprogramme, die uns dies
abnehmen. Dies sind normale Editoren.
* Auf Schicht S1 ist uns also die Arbeit für
die schriftkulturübliche(!) Formatierung schon
abgenommen.
* Rechner im Weltnetz kommunizieren aber (leider)
oft auf dem gemeinsamen kleinsten Nenner S0,
spätestens, wenn man Sachen wie "Wort-trennung"
liest war es der Fall.
* Es hat sich eingebürgert die Dateinamensendung
".txt" oder ".TXT" für auf Schicht S1 erfassten
Dateien zu verwenden.
1.3.0.2. Textart-Schicht S2
---------------------------
* der Mensch will aber auch seinen Text gestaltet
haben mit z.B. mit Schrägschrift, unterstrichen,
andere Schriftarten, Schrifttypen, kurz das Layout.
Dies findet dann auf der Ebene S2 mit Makros
(+ zugehörige Formatierungen) statt.
* Dazu ist eine sogenannte "Textverarbeitung"
schon notwendig. Programme dazu gibt es viele.
Normen, welche eben diese "Makros" beschreiben
leider leider auch sehr viele. Der Extrawürste
sind unzählige, auch innerhalb nur einer
Schriftkultur. Dies schimpft sich Dateiformate,
was aber eigentlich "Firmenegoismen" heißen
müsste.
Eine gewisse Norm schafft aber nun doch der
XML/HTML-Standart, eben allein durch das Weltnetz.
Das Internet hobelt alle gleich, weil ein jeder
dann doch will, dass der andere seine Einlassungen
auch "rezipieren" kann. Man denkt dabei sogar
"barrierefrei" an Blinde und andere Behinderte ...
Neue Interentprogrammierung trennt möglichst streng
zwischen Textinhalt (Schicht S0 pur) und den
Formatierungen, dem Layout (Zusätze für S2) und
hat dafür v.a. die Sprache CSS (Cascading Style Sheets)
vorgesehen, welche in verschiedenen und damit
verwirrenden Versionen soweit von allen Grafikbrowsern
verarbeitet und damit mehr oder weniger passabel
interpretiert werden kann.
* Einst gab es sogar Textverarbeitungsprogramme,
welche den Text zwar formatiert in Schicht S2
ausdrucken konnten, jedoch nicht am Bildschirm
ebenso anzeigen konnten, z.B. Wordstar.
Heute hat man nur WYSIWYG oder wenigstens GUI,
d.h. man sieht alles so, wie es dann auch
gedruckt wird ... überwiegend.
* MERKSATZ: Jeder Editor auf Schicht S2 kann
Dateien, die auf Schicht S1 erfasst wurden
korrekt darstellen und bearbeiten, sofern
er dieselbe Schriftkultur und keine kleinere
Umfangsebene hat!
* Die Art des Dateiformates erkennt man (bei
korrekter EDV) an der Namensendung. Dies
sei als ein Standart zu nehmen, der MIME-Standart!
Windows-Nutzer werden davon "verschont", dafür bekommen
sie ein aussageunkräftiges Miniicon zu sehen.
Ergebnis: "Bei mir geht das aber nicht ..."
1.3.1. Sinnige und unsinnige Texterfassungsprogramme
----------------------------------------------------
eine subjektive Zusammenstellung
1.3.1.1. Verfahren alte Texterfassung unter M$-DOS
--------------------------------------------------
* unter dem auf 256 Zeichen erweiterten Zeichensatz "CP-850"
= "PC-850" (ungleich zu CP-437 (US))
* ASCII-127 ist Teilmenge
* Zeilenumbruch ist Wagenrücklauf + Zeilenvorschub = C_M + C_J
Wagenrücklauf nach links = eingebaute Schriftkultur
a) Editor, Beispiel litl' Jake"
ein S1-Editor, erfasst nur Schicht 1 und 0,
Trennung zwischen Form und Inhalt nicht gegeben
= Erfassung entspricht weitgehenst Ausgabe.
Erfassung angenehmst!
b) Textverarbeitung, Beispiel "Context pro"
* verwendet eigene Formatierung (sofern nicht "ASCII-Modus"
vom Benutzer geschaltet)
* Erfassung entspricht der Ausgabe = WYSIWYG = S2
* Layout-Formatierung nicht zugänglich, eigenes Druckprogramm
* Umsetzung unter erheblichem Verlust des Layouts (S2) nach
ASCII CP-850 möglich
* Erfassung sehr angenehm, viele Möglichkeiten
+ Blocksatz
- Fußnoten
Umsetzung der internen Formatierung via spezieller
Eingabe "Druckersteuerkennzeichen" oder durch
Nachbearbeitungsparser möglich.
So ist es auch bei Word und Windows-Textprogrammen
1.3.1.2. Erfassungen in der UNIX-Welt
-------------------------------------
1.3.1.2.1. Zeichenorientierte
-----------------------------
* nur Schicht S0, teilweise auch S1
* Zeilenumbruch ist Zeilenvorschub = Control_J = Strg_J
= inherente Schriftartkultur bei UNIX
a) Editor Joe
* Erfassung leider eklig, blödeste Steuertasten
* Umbau auf andere Steuertasten denkbar, da Open Source
* immerhin zeigt er die Zeilenrücklauf-Formatierung an,
daher so halb S1 halb S0
* Art der Kodierung (vgl. 1.2.0.) = ASCII
b) Editor des Midnight Commanders mc
* Open Source
* Schicht S1
c) vim
* bei vim kann man die Kodierung einstellen
* Bedienung durch 2 Modi gewöhnungsbedürftig
1.3.1.2.2. unter der grafischen Oberfläche X
--------------------------------------------
a) Beispiel kedit als Teil des Fenstermanagers KDE
* Erfassung macht keine große Laune
* Schicht S1
b) Beispiel bluefish als HTML-"workbench"
* mit geschickten Makros für html-Programmierung
* ansich S2
c) yudit
* ein Editor der utf-Umfangsebene
* S2
1.3.2. Konvertierungen = unverzichtbar!
----------------------
Das Programm recode/Unix ist der Bringer schlechthin.
z.B.: recode -g cp850/CR-LF..ISO-8859-15 unixout.txt
Unix nach html
* txt2html.pl ist ein ziemlicher Bringer
Was bringt Umsetzung nach ps/pdf?
+ man kann dezidierter Ausgabevorstellungen festlegen
+ sicherer gegen Veränderungen und Manipulationen
Was bringt LaTex?
- es wird alles noch komplizierter für den Erstanwender
STECKBRIEF dieses Textes (als Beispiel)
------------------------
Zeichensatz: Lateinische Buchstaben groß/klein, + Umlaute
+ einige sonstige Zeichen, natürlich "whitespace"-Zeichen
(vgl. 0.3.)
Umfangsebene des Zeichensatzes: ISO = 256 Zeichen
(und damit sind die ersten 127 Zeichen schon festgelegt
vgl. 1.2.2.1.)
Zeichensatzkodierung dazu: in iso-8859-1, Ausgabe mit
iso-8859-15 führt aber auch zur korrekten Darstellung.
Rechner-Schriftkultur = Art der Zeichen: Lateinische, mit
Umlauten, und sonstigen "technikgeschichtsbedingten
Sonderzeichen" (des Nordatlantikraumes). Die Art der
Zeichen gehören nicht zur Unicode-Schriftkultur für Rechner.
Art der Kodierung: Hängt davon ab mit welchem Programm
man diese Textdatei ansieht, wenn HEX-Editor, dann
Hexadezimal, mit handelsüblichem Browser dann siehe
Browsereinstellung.
Kodierungsmethode: Schicht S1, und somit keine Probleme
mit Schicht S2 = Dateiformate für Layout. S1 ist eine
Untermenge von S2. Deshalb ist das Layout auch sehr einfach.
Stand 2011-02-12, Ergänzungen 2013-03-29, 2020-12-25, 2021-01-15