Standardkomprimierungsschema für Unicode

Das Standardkomprimierungsschema für Unicode (SCSU)[1] ist ein Unicode Technischer Standard zur Reduzierung der Anzahl von Bytes benötigt, um Unicode-Text darzustellen, insbesondere wenn dieser Text hauptsächlich Zeichen aus einem oder einer kleinen Anzahl von Zeichenblöcken pro Sprache verwendet. Dies geschieht, indem es dynamisch Werte im Bereich 128–255 auf Offsets innerhalb bestimmter Blöcke von 128 Zeichen abbildt. Die Anfangsbedingungen des Encoders bedeuten, dass vorhandene Zeichenfolgen in ASCII und ISO-8859-1 Das enthalten keine anderen C0 -Kontrollcodes als Null Tab CR und LF können als SCSU -Zeichenfolgen behandelt werden. Da sich die meisten Alphabete in Blöcken mit zusammenhängenden Unicode -Codepoints befinden, Texte, die kleine Alphabete verwenden, und entweder eine ASCII Oft nur 1 Byte), kann die meisten anderen Interpunktionen durch nicht lockere Verschiebungen bei 2 Bytes pro Symbol codiert werden. SCSU kann auch zu wechseln UTF-16 intern, um nicht alphabetische Sprachen zu handhaben.

Geschichte & Gebrauch

Reuters Ursprünglich entwickelte SCSU, dann unter dem Namen RSCU für Reuters -Kompressionsschema für Unicode.[2][3][4][5]

Zunächst betrachtete das Unicode -Konsortium es als eine Charaktercodierung,[6] Aber 1999 änderte es seine Meinung: Obwohl es immer noch als Transfer -Codierungs -Syntax angesehen wurde, wurde es für eine Weile nicht mehr als Zeichenkodierung angesehen, da verschiedene Kompressoren möglicherweise unterschiedliche Ausgänge für denselben Text liefern.[7] Im Jahr 2004 wurde diese Entscheidung jedoch zurückverkehrt und jetzt wird SCSU als als betrachtet Komprimierung Zeichenkodierschema im Gegensatz zu einem einfachen oder zusammengesetzten Charakter -Codierungsschema.[8]

Römisch czyborra (von GNU Unifont) schrieb einen Dekompressor.[9] Der IBM-kontributierte Dekompressor findet sich in Internationale Komponenten für Unicodezusammen mit einem in Java geschriebenen Kompressor.[10] Einfachere Referenzcodecs sind als Anhänge zu TR6 verfügbar.

Symbian OSEin Betriebssystem für Mobiltelefone und andere mobile Geräte verwendet SCSU, um Saiten zu serialisieren.

SQL Server 2008 R2 Verwendet SCSU, um Unicode -Werte zu komprimieren (es gibt aus Zeichenfolgen in UCS-2 Codierung) gelagert in nchar (n) und nvarchar (n) Säulen, Platzeinsparung zwischen 15% und 50% (während UTF-8 hat nur diese 50% Reduktion für ASCII Teilmenge von Unicode) abhängig von der Sprache der Daten.[11]

Das Schema

Die folgenden Abschnitte beschreiben kurz die Anatomie eines komprimierten SCSU -Streams. Eine vollständige Beschreibung (entspricht dem eines Dekompressors) finden Sie im UTS #6 -Dokument.

Codierungsmodi

SCSU startet im Single-Byte-Modus, der die komprimierte Fenstercodierung verwendet. Es gibt Befehle, um in einen UTF-16BE "Unicode" -Modus zu wechseln und aus diesem Modus zum Single-Byte-Modus zu wechseln.

Fensterkodierung

Der Kern von SCSU liegt in den Fenstern, für die die Bedeutungen von Bytes 0x80-0xff definiert sind. Es gibt acht statische Fenster für einfachere Skripte und Interpunktion sowie 6 Arten dynamischer Fenster (plus "Half Unicode Block" Windows und benutzerdefinierte Fenster für die Zusatzebenen) für Skripte, die mehr Zeichen verwenden.

Sowohl einfache als auch dynamische Fenster werden durch spezielle Befehlszeichen ausgewählt. Für einzelne Zeichen, die nicht in den aktuellen Block passen, werden Befehlszeichen für das Zitieren bereitgestellt.

Vergleich mit allgemeinen Normaltextkomprimierungsschemata

Da UTF-16- oder UTF-8-Text mehr Platz einnehmen könnte als sein Äquivalent in Vorunikodier-Codierungen, möchte man möglicherweise Komprimierung wie SCSU verwenden, um dieses Problem zu mildern.[12] Im Vergleich zu allgemeinen Kompressoren ist es nicht unbedingt vorteilhaft, SCSU zu verwenden.[5] Auch wenn es als Textcodierung verwendet werden kann, kann aufgrund der staatlichen Natur des Algorithmus Schwierigkeiten auftreten, wenn sie als interne Textdarstellung verwendet werden, da grundlegende Textvorgänge nicht trivial werden.

SCSU wird nur als Kompressionsalgorithmus behandelt und ist den am häufigsten verwendeten allgemeinen Algorithmen für Texte von über einige Kilobyten unteren.

SCSU hat den Vorteil, dass es sich nützlicherweise um Texte komprimieren kann, die nur wenige Zeichen lang sind, während die meisten umfassenden Kompressoren Hunderte von Datenbytes benötigen, um sogar gegen ihren eigenen Overhead zu brechen. Im Symbian OS, SCSU wird auch für Zwischenablagevorgänge verwendet, z. Schneiden, kopieren und einfügen von kleinen Textzeichenfolgen.

In HTML

Unterstützung von SCSU in Html Dokumente sind von der verboten W3c[13][14] und Waswg[15] HTML-Standards, weil HTML nicht mit berücksichtigten Nicht-ASCII-kompatiblen Codierungen konzipiert wurde. In der Vergangenheit, Cross-Site-Scripting Schwachstellen wurden aufgrund des schlechten Umgangs mit solchen Codierungen durch Browser nachgewiesen.[16]

Siehe auch

Verweise

  1. ^ "UTS #6: Kompressionsschema für Unicode". 2005-05-06. Abgerufen 2008-06-13. SCSU definiert eine kompakte Codierung, die manchmal nützlich ist. Unicode -Text wird jedoch viel häufiger gespeichert und übertragen in UTF-8 das ist weniger kompakt (außer auf ASCII), viel einfacher und präsentiert keine Sicherheitsprobleme. Für längere Texte ist die allgemeine Komprimierung wirksam und häufig.
  2. ^ "Neunte internationale Unicode -Konferenz - Freitag - Track B".
  3. ^ "Zehnte internationale Unicode -Konferenz - Konferenzprogramm".
  4. ^ "Kompressionsschema für Unicode".
  5. ^ a b "Eine Umfrage zur Unicode -Komprimierung".
  6. ^ "UTR#17: Charakter -Codierungsmodell".
  7. ^ https://unicode.org/reports/tr17/tr17-3.html#transfer Codierungssyntax
  8. ^ "UTR#17: Charakter -Codierungsmodell".
  9. ^ https://czyborra.com/scsu/scsu.c[Bare URL -Klartextdatei]
  10. ^ "Internationale Komponenten für Unicode". GitHub. 22. Oktober 2021.
  11. ^ "Implementierung der Unicode -Komprimierung (SQL Server 2008 R2 -Bücher online)". Abgerufen 2008-08-18.
  12. ^ https://unicode.org/version/unicode3.0.0/ch05.pdf[Bare URL PDF]
  13. ^ "8.2.2.3. Charaktercodierungen". HTML 5.1 Standard. W3c.
  14. ^ "8.2.2.3. Charaktercodierungen". HTML 5 Standard. W3c.
  15. ^ "12.2.3.3 Charaktercodierungen". HTML Living Standard. Waswg.
  16. ^ "<meta> - html". MDN Web Docs. Mozilla. Archiviert von das Original am 3. Oktober 2018.