6 Unterschied zwischen UCS-2 und UTF-16

Contents

UTF-16

UTF-16  (16-Bit-Unicode-Transformationsformat) ist eine Zeichencodierung, die alle 1.112.064 Nicht-Ersatzcodepunkte von Unicode codieren kann (tatsächlich wird diese Anzahl von Codepunkten durch das Design von UTF-16 vorgegeben). Die Codierung ist längenvariabel, da Codepunkte mit einer oder zwei 16-Bit- Codeeinheiten codiert werden  . UTF-16 entstand aus einer früheren 16-Bit-Codierung mit fester Breite, bekannt als UCS-2 (für 2-Byte-Universalzeichensatz), als klar wurde, dass mehr als 2 16  (65.536) Codepunkte benötigt wurden.

UTF-16 wird intern von Systemen wie Microsoft Windows, der Programmiersprache Java und JavaScript/ECMAScript verwendet. Es wird auch häufig für Klartext und für Textverarbeitungsdatendateien unter Microsoft Windows verwendet. Es wird selten für Dateien auf Unix-ähnlichen Systemen verwendet. Ab Mai 2019 scheint Microsoft den umgekehrten Weg eingeschlagen zu haben und unterstützt und empfiehlt nun die Verwendung von UTF-8.

UTF-16 ist die einzige Webcodierung, die nicht mit ASCII kompatibel ist, und hat im Web nie an Popularität gewonnen, wo es von weniger als 0,005% (weniger als 1 Hundertstel von 1 Prozent) der Webseiten verwendet wird. UTF-8 wird dagegen von 97% aller Webseiten verwendet. Die Web Hypertext Application Technology Working Group (WHATWG) betrachtet UTF-8 als „die obligatorische Kodierung für alle [Text]“ und dass Browseranwendungen aus Sicherheitsgründen UTF-16 nicht verwenden sollten.

Was Sie über UTF-16 wissen müssen

  • UTF steht für Unicode Transformation Format-16.
  • UTF-16 ist eine variable Breite, die 2 Byte oder 4 Byte für jedes Zeichen verwendet.
  • UTF-16 kann 1.112.064 Codepunkte codieren.
  • UTF-16 unterstützt die Normalisierung. Bei der Normalisierung werden Wörter, die dasselbe bedeuten, aber unterschiedlich dargestellt werden, als identisch behandelt.
  • In UTF-16 können die Skripte die Direktionalität erkennen, sodass die Anwendung die im Code gespeicherten Wörter korrekt wiedergeben kann.
  • Die aktuelle Windows-Version ab Windows 2000 verwendet UTF-16.

UCS-2

UCS-2 steht für Unicode Character Set Codiert in 2 Bytes. UCS-2 ist ein Zeichencodierungsstandard, bei dem Zeichen durch 16 Bits (2 Bytes) fester Länge dargestellt werden. Es wird in vielen GSM-Netzen als Fallback verwendet, wenn eine Nachricht nicht mit GSM-7 kodiert werden kann oder wenn eine Sprache mehr als 128 Zeichen zur Wiedergabe benötigt.

UCS-2 und die anderen UCS-Standards werden von der International Organization for Standardization (ISO) in ISO 10646 definiert. UCS-2 steht für maximal 65.536 Zeichen, bzw. in Hexadezimalzahlen von 0000h – FFFFh (2 Byte). Die Zeichen in UCS-2 werden mit der Basic Multilingual Plane in Unicode synchronisiert.

Zeichen  ist ein überladener Begriff, daher ist es eigentlich richtiger, sich auf Codepunkte zu beziehen. Codepunkte ermöglichen eine Abstraktion vom  Zeichenbegriff  und sind die atomare Informationsspeichereinheit in einer Codierung.

UCS-2 ist eine Codierung mit fester Breite; jeder codierte Codepunkt benötigt genau 2 Byte. Da eine SMS-Nachricht in 140 Oktetts übertragen wird, hat eine in UCS-2 verschlüsselte Nachricht maximal 70 Zeichen (eigentlich Codepunkte): (140*8) / (2*8) = 70.

Nach dem Unicode-Standard ist UCS-2 eine veraltete Kodierung, da es nicht dafür ausgelegt ist, Zeichen in den sogenannten ergänzenden oder ‘astralen’ Ebenen in Unicode zuzulassen. Ebene 0, die grundlegende mehrsprachige Ebene, enthält Zeichenkodierungen für die vermutlich am häufigsten verwendeten Zeichen in modernen Sprachen. UCS-2 ist auf FFFFh-Codepunkte oder 65.536 mögliche Zeichen beschränkt.

UTF-16 ist der Nachfolger von UCS-2. und hat die Fähigkeit, Basis- und 16 Ergänzungsebenen zu adressieren, für eine maximale Gesamtzahl von Zeichen von 10FFFFh oder 1.114.112 Codepunkten.

Was Sie über UCS-2 wissen müssen

  • UCS-2 steht für Unicode Character Set Codiert in 2 Bytes.
  • UCS-2 ist eine 2-Byte-Zeichencodierung mit fester Breite für Unicode.
  • UCS-2 kann 65.536 Codepunkte (0-0XFFFF) kodieren.
  • In UCS-2 erfolgt die Normalisierung nicht automatisch, daher muss die Anwendung eine solche Funktion selbst implementieren.  
  • UCS-2-Skripten fehlt die Fähigkeit, die Richtung zu erkennen, daher funktionieren sie nicht mit Skripten wie Arabisch und Hebräisch, die sich von rechts nach links bewegen.
  • Frühe Windows-Versionen ab Windows NT 3.1 und Windows 95 verwendeten UCS-2.

Unterschied zwischen UCS-2 und UTF-16 in Tabellenform

VERGLEICHSGRUNDLAGE  UTF-16UCS-2
AkronymUTF steht für Unicode Transformation Format-16.  UCS-2 steht für Unicode Character Set Codiert in 2 Bytes.  
BeschreibungUTF-16 ist eine variable Breite, die 2 Byte oder 4 Byte für jedes Zeichen verwendet.  UCS-2 ist eine 2-Byte-Zeichencodierung mit fester Breite für Unicode.  
PunkteUTF-16 kann 1.112.064 Codepunkte codieren.  UCS-2 kann 65.536 Codepunkte (0-0XFFFF) kodieren.  
NormalisierungUTF-16 unterstützt die Normalisierung. Bei der Normalisierung werden Wörter, die dasselbe bedeuten, aber unterschiedlich dargestellt werden, als identisch behandelt.  In UCS-2 erfolgt die Normalisierung nicht automatisch, daher muss die Anwendung eine solche Funktion selbst implementieren.   
SkripteIn UTF-16 können die Skripte die Direktionalität erkennen, sodass die Anwendung die im Code gespeicherten Wörter korrekt wiedergeben kann.  UCS-2-Skripten fehlt die Fähigkeit, die Richtung zu erkennen, daher funktionieren sie nicht mit Skripten wie Arabisch und Hebräisch, die sich von rechts nach links bewegen.  
AnwendungDie aktuelle Windows-Version ab Windows 2000 verwendet UTF-16.  Frühe Windows-Versionen ab Windows NT 3.1 und Windows 95 verwendeten UCS-2.  

osky