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:
Ä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 (= 220+216, abzüglich 211 = 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.