Universal Coded Character Set
# Universal Coded Character Set

Der Universal Coded Character Set (UCS) ist ein Zeichensatz, der in der internationalen Norm ISO/IEC 10646 definiert ist. Seit der Revision 2011 (ISO/IEC 10646:2011) sind die definierten Zeichenkodierungen einschließlich ihrer Benennungen identisch mit denen des Unicode-Standards:

* UTF-8
* UTF-16
* UTF-32

Ältere Ausgaben der Norm definierten andere Kodierungen, die jetzt deprecated sind:

* UCS-2, Untermenge von UTF-16
* UCS-4, als Codierung identisch mit UTF-32

Der Unterschied zwischen UCS-2 und UTF-16 ist folgender:

* UCS-2 ist eine Fixed-Byte-Kodierung: jedes Zeichen ist genau 2 Byte lang. UCS-2 kann damit die 65.536 Zeichen der Basic Multilingual Plane (BMP) darstellen.
* UTF-16 ist eine Flexible-Byte-Kodierung: ein einzelnes Zeichen ist 2 Byte oder 4 Byte lang – 2 Byte bei Zeichen in der oben genannten BMP, 4 Byte bei Zeichen außerhalb der BMP.

Dadurch hat jedes UCS2-Zeichen den gleichen Codepoint wie das entsprechende UTF-16-Zeichen, aber nicht jedes UTF-16-Zeichen kann in UCS-2 dargestellt werden (wenn es nämlich in UTF-16 vier Byte umfasst).

Der UCS wird entwickelt von ISO/IEC/JTC1/SC2/WG2. Die Gruppe arbeitet sehr eng mit dem Unicode-Konsortium zusammen, das die Standards ständig in neuen Versionen synchronisiert. Aufgrund dessen sind alle Kodierungen aus Gründen der Interoperabilität beschränkt auf die bei Unicode erlaubten 1.112.064 Zeichen (= $2^{20}+2^{16},$ abzüglich $2^{11}$ = 2048 Surrogate von UTF-16), nämlich von U+00000 bis U+0D7FF sowie von U+0E000 bis U+10FFFF.

Ursprünglich wurden diese beiden Formate definiert:

* UCS-2: obsolete Kodierung in 2 Byte; dabei lässt sich nur die Basic Multilingual Plane kodieren. Dies ermöglicht die Codierung der meisten lebenden Sprachen und der gebräuchlicheren Sonderzeichen. UCS-2 ist nicht mehr Bestandteil des Standards. UCS-2 war auch der Zeichensatz von Microsoft Windows NT, wohingegen seit Windows 2000 UTF-16 eingesetzt wird.
* UCS-4: Kodierung in 4 Byte (entspricht UTF-32).

In der Version ISO/IEC 10646-3:2003 wurden die gleichen Formate UTF-8, UTF-16 und UTF-32 beschrieben wie in Unicode 4.0.

## Gegenüberstellung der Versionen

* ISO/IEC 10646-1:1993 ≈ Unicode 1.1
   * plus ISO/IEC 10646-1:1993/Amd 5:1998 bis ISO/IEC 10646-1:1993/Amd 7:1997 ≈ Unicode 2.0/2.1
* ISO/IEC 10646-1:2000 ≈ Unicode 3.0
   * plus ISO/IEC 10646-2:2001 ≈ Unicode 3.1
   * plus ISO/IEC 10646-1:2000/Amd 1:2002 ≈ Unicode 3.2
* ISO/IEC 10646-3:2003 ≈ Unicode 4.0
   * plus ISO/IEC 10646:2003/Amd 1:2005 ≈ Unicode 4.1
   * plus ISO/IEC 10646:2003/Amd 2:2006 ≈ Unicode 5.0
   * plus ISO/IEC 10646:2003/Amd 3:2008 und ISO/IEC 10646:2003/Amd 4:2008 ≈ Unicode 5.1
   * plus ISO/IEC 10646:2003/Amd 5:2008 und ISO/IEC 10646:2003/Amd 6:2009 ≈ Unicode 5.2
* ISO/IEC 10646:2011 ≈ Unicode 6.0
* ISO/IEC 10646:2012 ≈ Unicode 6.1/6.2/6.3
   * plus ISO/IEC 10646:2012/Amd 1:2013 und ISO/IEC 10646:2012/Amd 1 ≈ Unicode 7.0
* ISO/IEC 10646:2014 und ISO/IEC 10646:2014/Amd 1:2015 ≈ Unicode 8.0
   * plus ISO/IEC 10646:2014/Amd 2:2016 ≈ Unicode 9.0
* ISO/IEC 10646:2017 ≈ Unicode 10.0
