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