1
2
» ASCII = American Standard Code for Information Interchange.» ASCII ist Standard in Windows und Unix (und Unix-Derivaten).» ASCII ist eigentlich ein 7-Bit-Zeichensatz, d. h. das erste Bit jedes Bytes wird nicht genutzt.» EBCDIC = Extended Binary Coded Decimals Interchange Code.» EBCDIC wurde von IBM entwickelt und wird fast ausschließlich auf Großrechnern verwendet.» EBCDIC nutzt alle 8 Bits eines Bytes und kann daher mehr Zeichen kodieren als ASCII.» Es gibt nicht den ASCII- oder den EBCDIC-Zeichensatz, da unterschiedliche Sprachen auch unterschiedliche Buchstaben und Sonderzeichen benötigen. 3
» In einem Non-Unicode ist es nicht ohne weiteres möglich, den Polnischen, Französischen und Chinesischen Zeichensatz zu nutzen.» Im Jahr 2000 haben wir ein SAP-System installiert, bei dem zunächst Mandanten für Kunden in Deutschland und Tschechien erstellt wurden. Deswegen haben wir uns für die osteuropäische Codepage entschieden. Kurz danach kam ein Schweizer Kunde hinzu. Dieser Kunde hatte deutschsprachige und französischsprachige Mitarbeiter und wollte die Entgeltbelege für alle Mitarbeiter in deren Sprache drucken. Das war nicht möglich, da die osteuropäische Codedpage keine die französische Sprache nicht kennt. Wir haben uns damit behelfen müssen, bei den französischsprachigen Mitarbeitern die Sprache Tschechisch zu hinterlegen und dann bei Tschechisch die französischen Texte zu erfassen. 4
» Non-Unicode-Systeme können Sprachen, die zu einer anderen Codepage gehören, nicht darstellen. 5
» Unicode ist die einzige Möglichkeit, in einer Codepage alle Zeichen darstellen zu können, da Unicode im Gegensatz zu Non-Unicode- Zeichensätzen nicht darauf angewiesen ist, in 7 oder 8 Bits alle benötigten Zeichen zu verschlüsseln.» In einem SAP-System, das mit Unicode arbeitet, können also Kunden aus Frankreich und Tschechien gemeinsam gehostet werden, und ein Anwender kann auf beide Sprachen zugreifen. 6
» In Windows kann man sich die Zeichen mit dem Kommando charmap.exe anzeigen lassen. 7
» Quelle dieser Informationen: http://de.wikipedia.org/wiki/unicode#geschichte 8
9
10
11
» Da hauptsächlich Zeichen der BMP genutzt werden, wird die Kodierung normalerweise 4-stellig geschrieben, also U+0000 bis U+FFFF.» Nur wenn ein Zeichen einer anderen Plane kodiert wird, wird die Kodierung 5- oder 6-stellig geschrieben. 12
» Quelle der Grafik: http://de.wikipedia.org/wiki/unicode#gliederung_in_ebenen_und_bl.c3.b6cke» Ein Block umfasst jeweils ein Vielfaches von 16 Zeichen.» Meistens werden zusammengehörige Zeichen in einem Block zusammengefasst, aus historischen Gründen gibt es jedoch ein gewisses Maß an Fragmentierung. 13
» Im Beispiel sind nur Zeichen der BMP. 14
15
16
17
» UTF-8 spart gegenüber UTF-16 deutlich Platz, da in UTF-8 alle ASCII- Zeichen nur 1 Byte benötigen, so dass bei lateinischer Schrift UTF-8 kaum mehr Platz benötigt als eine Non-Unicode-Codepage, solange man wenige Sonderzeichen verwendet. 18
» Erklärung des Beispiels weiter oben (Vergleich der Unicode-Varianten) mit dem asiatischen Zeichen» Es kann sein, dass eine installierte Software mit einer anderen Unicode-Variante arbeitet als das System auf dem sie installiert ist. Wir haben in meiner Firma z. B. ein SAP-System, bei dem das Betriebssystem mit UTF-8 in Linux und der Oracle-Datenbank arbeitet und UTF-16 in SAP. Das bedeutet:» Bei jedem Lesen von der Datenbank und bei jedem Schreiben auf die Datenbank durch SAP muss eine Konvertierung durchgeführt werden, diese Operationen sind also langsamer als in einem Non- Unicode-System.» Solange nur Zeichen der BMP verwendet werden, ist das Debuggen in SAP leicht, da jedes Zeichen 2 Bytes lang ist. Würde SAP mit UTF-8 arbeiten, wäre es deutlich komplizierter, in der Hexadezimaldarstellung etwas erkennen zu können. 19
» SAP unterstützt den Umstieg auf Unicode, indem man auch in einem Non-Unicode-System bereits die Programme auf Unicode- Kompatibilität prüfen kann. 20
» In ABAP kann man Feldleisten definieren, die aus mehreren Feldern unterschiedlichen Typs und unterschiedlicher Länge bestehen.» In Non-Unicode-Systemen ist dadurch die Gesamtlänge der Feldleiste festgelegt:» 20 Bytes Character» 20 Bytes Character» 4 Bytes Integer (= binär)» 20 Bytes Character» Dadurch kann in einem Non-Unicode-System jede Position in dieser exakt 64 Bytes langen Feldleiste relativ adressiert werden.» In einem Unicode-System kann eine Feldleiste nur so lange relativ adressiert werden, wie die Länge in Bytes exakt definiert ist. Character-Felder haben eine Länge von genau 2 Bytes pro Zeichen und können weiterhin relativ adressiert werden. Für alle nicht zeichenartigen Felder geht dies nicht. 21
» Durch den Befehl OPEN DATASET wird eine bestehende Datei zum Überschreiben geöffnet oder eine neue Datei angelegt und zum Beschreiben geöffnet.» Dateien IN TEXT MODE haben eine Zeilenlänge, die durch die Feldleiste im TRANSFER-Befehl bestimmt wird. Am Ende jeder Zeile steht der Zeilenvorschub.» Diese Angabe genügt in einem Non-Unicode-System, nicht jedoch in einem Unicode-System. Das Unicode-System benötigt zusätzlich die Angabe, welche Codepage in der Datei verwendet werden soll. 22
» Encoding Default kann auch in Non-Unicode-Systemen bereits genutzt werden, es entspricht dem Open-Befehl ohne Encoding-Zusatz und bereitet damit auf eine evtl. später erfolgende Unicode-Umstellung vor.» 0D 0A = Carriage Return, Line Feed das sind die beiden Zeichen, die in Windows den Zeilenvorschub kodieren. (Unix nutzt nur 0A = Line Feed.) 23
24
25
26