www.wikidata.de-de.nina.az
Das Standard Compression Scheme for Unicode SCSU englisch fur Standard Kompressions Schema fur Unicode ist eine Zeichenkodierung fur Texte aus Unicode Zeichen das im Gegensatz zu den meisten anderen Kodierungen darauf ausgerichtet ist moglichst wenig Speicherplatz zu benotigten Inhaltsverzeichnis 1 Geschichte 2 Idee 3 Algorithmus 3 1 Fenster 3 1 1 Statische Fenster 3 1 2 Dynamische Fenster 3 2 Modi 3 3 Befehle 4 Eigenschaften 5 Mogliche Kodierungen 6 Beispiele 6 1 Deutsch 6 2 Griechisch 6 3 Japanisch 7 Verwendung 8 Quellen 9 Einzelnachweise 10 WeblinksGeschichte BearbeitenDie Kodierung wurde ursprunglich von Reuters entwickelt Autoren des im technischen Standard UTS 6 beschriebenen Verfahrens sind Misha Wolf Ken Whistler Charles Wicksteed Mark Davis Asmus Freytag und Markus Scherer Die erste Veroffentlichung erfolgte im Mai 1997 1 seit Mai 2005 liegt der Standard unverandert in der Revision 4 vor Idee BearbeitenTraditionelle Zeichensatze vor Unicode etwa die ISO 8859 Zeichensatze benotigten nur ein Byte pro Zeichen Zeichensatze fur ostasiatische Schriften zwei Byte Bei der Verwendung von Unicode steigt der Speicherbedarf meist an Bei UTF 32 auf vier Byte pro Zeichen bei UTF 16 sind es zwei oder vier Byte pro Zeichen bei UTF 8 zwischen ein und vier Byte pro Zeichen Dabei nutzen gewohnliche Texte nur einen sehr kleinen Teil aller in Unicode verfugbaren Zeichen Die meisten verwendeten Zeichen liegen dabei zum einen im ASCII Bereich insbesondere Satzzeichen zum anderen in einem kleinen zusammenhangenden Bereich der haufig einem Unicodeblock entspricht Der Algorithmus verwendet ein dynamisch positioniertes Fenster das 128 aufeinander folgende Zeichen umfasst Zeichen in diesem Fenster werden durch ein Byte im Bereich von 0x80 bis 0xFF kodiert Zeichen im ASCII Bereich mit Ausnahme der meisten Steuerzeichen durch ein Byte aus dem Bereich von 0x20 bis 0x7F Die restlichen Byte werden als Befehle verwendet um dieses Fenster neu zu positionierten oder in den unkomprimierten Modus umzuschalten in dem die folgenden Byte als UTF 16 interpretiert werden Dieser Modus ist besonders dann zweckmassig wenn der Text viele Zeichen aus einem Bereich von mehr als 128 aufeinander folgenden Zeichen verwendet etwa im Chinesischen Algorithmus BearbeitenDiese Idee wird mit dem folgenden Verfahren umgesetzt Definiert wird dabei die Methode mit der aus einem SCSU Bytestrom wieder ein Text aus Unicode Zeichen gewonnen werden kann Zur Kodierung konnen verschiedene Algorithmen verwendet werden die zu einem Ergebnis fuhren das korrekt dekodiert werden kann Wie ein solcher Algorithmus gestaltet wird hangt unter anderem davon ab ob mehr Gewicht auf eine schnelle Kodierung oder auf eine gute Kompression gelegt wird Fenster Bearbeiten Der Algorithmus kennt zwei Arten von Fenstern Statische Fenster die im Algorithmus fest vordefiniert sind und dynamische Fenster deren Position bei Bedarf geandert werden kann Von jeder Sorte gibt es acht Stuck nummeriert von 0 bis 7 Die Lage eines Fensters kann durch den Codepunkt des ersten Zeichens in diesem Fenster angegeben werden Statische Fenster Bearbeiten Die acht statischen Fenster sind folgendermassen definiert Fensternummer Start enthaltene Zeichen0 U 0000 Basis Lateinisch1 U 0080 Lateinisch 1 Erganzung2 U 0100 Lateinisch erweitert A3 U 0300 Kombinierende diakritische Zeichen4 U 2000 Allgemeine Interpunktion und Hochgestellte Zeichen5 U 2080 Tiefgestellte Zeichen Wahrungszeichen und Kombinierende diakritische Zeichen fur Symbole6 U 2100 Buchstabenahnliche Symbole und Zahlzeichen7 U 3000 CJK Symbole und InterpunktionDynamische Fenster Bearbeiten Die Anfangspositionen der acht dynamischen Fenster sind die folgenden Fensternummer Start enthaltene Zeichen0 U 0080 Lateinisch 1 Erganzung1 U 00C0 Teile von Lateinisch 1 Erganzung und Lateinisch erweitert A2 U 0400 Kyrillisch3 U 0600 Arabisch4 U 0900 Devanagari5 U 3040 Hiragana6 U 30A0 Katakana7 U FF00 Vollbreite FormenDas dynamische Fenster 0 ist dabei zu Beginn aktiv Um die Position eines dynamischen Fensters zu verandern stehen verschiedene Befehle zur Verfugung Die beiden einfachen Befehle SDn und UDn zur Definition bestimmen die neue Lage des Fensters durch ein Byte nach der folgenden Tabelle Byte hex Start Anmerkung00 reserviert reserviert zur internen Verwendung01 67 U 0080 U 3380 das Byte wird mit 0x80 multipliziert68 A7 U E000 U FF80 das Byte wird mit 0x80 multipliziert dazu wird 0xAC00 addiertA8 F8 reserviert reserviert fur zukunftige VerwendungF9 U 00C0 Teile von Lateinisch 1 Erganzung und Lateinisch erweitert AFA U 0250 IPA ErweiterungenFB U 0370 GriechischFC U 0530 ArmenischFD U 3040 HiraganaFE U 30A0 KatakanaFF U FF60 Halbbreite KatakanaDie beiden erweiterten Befehle SDX und UDX zur Fensterdefinition verwenden zwei Byte Die obersten drei Bit geben die Nummer des Fensters an zu den restlichen 13 Bit wird 0x10000 addiert und das Ergebnis als erstes Zeichen des Fensters genommen Modi Bearbeiten Der Algorithmus verwendet zwei verschiedene Modi Anfangs befindet er sich im Ein Byte Modus in dem Zeichen durch ein einzelnes Byte kodiert werden Bytewerte im Bereich 0x20 bis 0x7F sowie 0x00 NUL 0x09 horizontales Tabulatorzeichen 0x0A LF und 0x0D CR werden als Zeichen im statischen Fenster 0 interpretiert Werte im Bereich 0x80 bis 0xFF als Zeichen im aktiven dynamischen Fenster Alle anderen Byte werden als Befehle interpretiert Der andere Modus ist ein Zwei Byte Modus Bis auf einige Ausnahmen werden hier alle Bytepaare als UFT 16BE kodierte Zeichen interpretiert nur einige wenige Bytes stellen Befehle dar Befehle Bearbeiten Im Ein Byte Modus stellen folgende Bytewerte Befehle dar Byte hex Name Bedeutung01 08 SQ0 SQ7 wechselt fur das folgende Byte die Fenster 0x00 bis 0x7F werden als Zeichen im statischen Fenster n interpretiert 0x80 bis 0xFF im dynamischen Fenster n0B SDX verwendet die beiden folgenden Bytes zur erweiterten Definition eines dynamischen Fensters dieses Fenster ist danach aktiv0C reserviert reserviert fur zukunftige Verwendung0E SQU interpretiert die beiden folgenden Byte als ein UTF 16 kodiertes Zeichen0F SCU wechselt in den Zwei Byte Modus10 17 SC0 SC7 macht das dynamische Fenster n zum aktiven Fenster18 1F SD0 SD7 verwendet das folgende Byte als einfache Definition fur das dynamische Fenster n dieses Fenster ist danach aktivSoll ein Steuerzeichen kodiert werden das durch ein Byte reprasentiert wird das einen Befehl darstellt kann der Befehl SQ0 verwendet werden Im Zwei Byte Modus stellen folgende Bytewerte Befehle dar sofern sie an erster Position in einem moglichen Bytepaar auftreten Byte hex Name BedeutungE0 E7 UC0 UC7 wechselt in den Ein Byte Modus und aktiviert das dynamische Fenster nE8 EF UD0 UD7 verwendet das folgende Byte als einfache Definition fur das dynamische Fenster n aktiviert dieses Fenster und wechselt in den Ein Byte ModusF0 UQU interpretiert die beiden folgenden Byte als ein UTF 16 kodiertes ZeichenF1 UDX verwendet die beiden folgenden Byte zur erweiterten Definition eines dynamischen Fensters aktiviert dieses Fenster und wechselt in den Ein Byte ModusF2 reserviert reserviert fur zukunftige VerwendungSoll ein Zeichen aus dem Bereich zur privaten Nutzung kodiert werden das mit einem von einem Befehl besetzten Byte beginnt kann der Befehl UQU verwendet werden Eigenschaften BearbeitenDas Verfahren besitzt einige Eigenschaften die bewusst gewahlt wurden Fur Texte die ausschliesslich aus Latin 1 Zeichen ohne Steuerzeichen bestehen ergibt sich keine Anderung Fur Texte ohne Zeichen aus dem Bereich zur privaten Nutzung kann immer mit einem zusatzlichen Byte in den Zwei Byte Modus umgeschaltet werden sodass der Speicherbedarf in diesem Fall dem von UTF 16 entspricht Selbst im schlechtesten Fall ist der Speicherbedarf nur um einen Faktor 1 5 grosser als UTF 16 Bei optimaler Kodierung werden normale Texte kompakter als in UTF 8 oder UTF 16 gespeichert Wie gross diese Einsparung ist hangt von der Sprache ab Wahrend bei englischen und franzosischen Texten SCSU genauso viel Platz benotigt wie UTF 8 reduziert sich dieser bei Koreanisch auf 85 bei Chinesisch auf 70 bei Griechisch Russisch Arabisch Hebraisch und Japanisch auf 55 bei Hindi sogar auf 40 2 Folgende Eigenschaften konnen in einigen Anwendungen problematisch sein Im komprimierten Bytestrom konnen Null Byte vorkommen unter anderem deswegen ist die Kodierung nicht MIME kompatibel Hier kann stattdessen BOCU 1 verwendet werden Der gleiche Text kann auf unterschiedliche Art kodiert werden Texte mit wenigen verschiedenen Zeichen die aber auf mehrere unzusammenhangende Bereiche verteilt sind konnen nicht gut komprimiert werden Dies ist etwa im Vietnamesischen der Fall Mogliche Kodierungen BearbeitenFolgen von Zeichen aus dem ASCII Bereich und den vordefinierten dynamischen Fenstern werden am effizientesten im Ein Byte Modus kodiert Gibt es kein geeignetes vordefiniertes Fenster so kann ein nicht benotigtes dynamisches Fenster umdefiniert werden Von den chinesischen und koreanischen Schriftzeichen abgesehen konnen die meisten Bereiche als dynamisches Fenster gewahlt werden Fur Folgen von Zeichen ausserhalb kleiner Bereiche sollte in den Zwei Byte Modus umgeschaltet werden Einzelne Zeichen die in einem Fenster liegen das gerade nicht aktiv ist konnen uber den Befehl SQn kodiert werden Einzelzeichen ausserhalb der moglichen Fenster uber den Befehl SQU Beispiele BearbeitenDeutsch Bearbeiten Um den Text Wikipedia die freie Enzyklopadie mit typographischem Gedankenstrich mit SCSU zu kodieren reichen alle vordefinierten Fenster aus nur der Gedankenstrich und das a liegen nicht im ASCII Bereich Das a befindet sich im aktiven dynamischen Fenster der Gedankenstrich im statischen Fenster 4 Es ergibt sich also folgende hexadezimale Bytefolge 57 69 6B 69 70 65 64 69 61 20 05 13 20 64 69 65 20 66 72 65 69 65 20 W i k i p e d i a SQ4 d i e f r e i e 45 6E 7A 79 6B 6C 6F 70 E4 64 69 65 E n z y k l o p a d i e Bis auf den Gedankenstrich stimmt die Kodierung mit ISO 8859 1 uberein Griechisch Bearbeiten Alle Zeichen des griechischen Wortes fur Wikipedia Bikipaideia liegen im Unicodeblock fur Griechisch Es lasst sich daher kodieren indem erst dieser Block durch ein dynamisches Fenster abgedeckt wird mit dessen Hilfe dann die Buchstaben kodiert werden 18 FB A2 C9 CA C9 D0 C1 BF C4 C5 C9 C1 SD0 B i k i p a i d e i a Die Kodierung braucht nur zwei Byte mehr als ISO 8859 7 ist aber gegenuber dieser um 0x20 verschoben Japanisch Bearbeiten Der japanische Wikipedia Artikel uber Wikipedia beginnt folgendermassen ウィキペディア 英 Wikipedia は ウィキメディア財団が運営するインターネット百科事典である Wikipedia Autoren ウィキペディア in der Version vom 26 Januar 2013 Es werden dabei verschiedene Schriften verwendet Lateinische Buchstaben und Satzzeichen die im statischen Fenster 0 liegen Katakana aus dem dynamischen Fenster 6 vereinzelt Hiragana aus dem dynamischen Fenster 5 CJK Zeichen die in keinem moglichen Fenster liegen Vollbreite Satzzeichen aus dem dynamischen Fenster 7 CJK Interpunktion aus dem statischen Fenster 7Eine von vielen moglichen Kodierungen stellen die folgenden Tabellen dar Die meiste Zeit wird mit dem dynamischen Fenster 6 Katakana gearbeitet Einzelne Zeichen aus anderen Bereichen werden ohne einen dauerhaften Wechsel kodiert Fur langere Folgen von CJK Zeichen wird dabei in den Zwei Byte Modus gewechselt erst wenn wieder langere Folgen von Hiragana oder Katakana kodiert werden mussen wird in den Ein Byte Modus zuruckgeschaltet Byte 16 86 83 8D BA A7 83 82 08 88 0E 82 F1 3A 20 57 69 6B 69 70 65 64 69 61 08 89ZeichenBefehl SC6 ウ ィ キ ペ デ ィ ア SQ7 SQU 英 W i k i p e d i a SQ7 Codepunkt U 30A6 30A3 30AD 30DA 30C7 30A3 30A2 FF08 82F1 003A 0020 0057 0069 006B 0069 0070 0065 0064 0069 0061 FF09Byte 06 AF 08 01 86 83 8D C1 A7 83 82 0F 8C A1 56 E3 30 4C 90 4B 55 B6ZeichenBefehl SQ5 は SQ7 ウ ィ キ メ デ ィ ア SCU 財 団 が 運 営Codepunkt U 306F 3001 30A6 30A3 30AD 30E1 30C7 30A3 30A2 8CA1 56E3 304C 904B 55B6Byte E5 99 CB 16 84 D3 9F DC AC A3 A8 0F 76 7E 79 D1 4E 8B 51 78 E5 A7 82 CB 08 02ZeichenBefehl UC5 す る SC6 イ ン タ ー ネ ッ ト SCU 百 科 事 典 UC5 で あ る SQ7 Codepunkt U 3059 308B 30A4 30F3 30BF 30FC 30CD 30C3 30C8 767E 79D1 4E8B 5178 3067 3042 308B 3002Verwendung BearbeitenIn der Praxis konnte sich SCSU nie durchsetzen Nur einige wenige Programme verwenden diese Kodierung darunter Microsoft SQL Server 3 und Symbian 4 Eines der Hauptprobleme des Verfahrens ist es einen guten Algorithmus zum Komprimieren zu finden und diesen auszufuhren Da es meist effizienter ist Rechenzeit zu sparen als Speicherplatz lohnt sich der Aufwand einer Komprimierung mit SCSU fur die meisten Anwendungen nicht gegenuber UTF 8 oder UTF 16 Zudem fuhrte die fehlende Unterstutzung von SCSU in Anwendungsprogrammen dazu dass SCSU kaum genutzt wurde was wiederum dazu fuhrte dass die Kodierung auch weiterhin nicht unterstutzt wurde Da eine Fehlinterpretation durch Programme die SCSU nicht unterstutzen zu unerwartetem Verhalten und sogar zu Sicherheitsproblemen fuhren kann ist eine Verwendung von SCSU in HTML5 ausdrucklich ausgeschlossen 5 Quellen BearbeitenAsmus Freytag u a Unicode Technical Standard 6 A Standard Compression Scheme For Unicode online Doug Ewell Unicode Technical Note 14 A Survey of Unicode Compression online Einzelnachweise Bearbeiten Asmus Freytag u a Unicode Technical Standard 6 A Standard Compression Scheme For Unicode Revision 1 0 Gemessen an What is Unicode in verschiedenen Sprachen in Markus W Scherer Mark Davis Unicode Technical Note 6 BOCU 1 BOCU 1 Performance Unicode Compression Implementation abgerufen am 26 Januar 2013 Forum Nokia Library Compressed Unicode resource format 1 2 Vorlage Toter Link library developer nokia com Seite nicht mehr abrufbar festgestellt im Mai 2019 Suche in Webarchiven nbsp Info Der Link wurde automatisch als defekt markiert Bitte prufe den Link gemass Anleitung und entferne dann diesen Hinweis abgerufen am 26 Januar 2013 HTML Standard Character Encodings abgerufen am 3 Dezember 2015 Weblinks BearbeitenICU User Guide Compression englisch Abgerufen von https de wikipedia org w index php title Standard Compression Scheme for Unicode amp oldid 216558958