UTF-7
aus Freepedia, der freien Wissensdatenbank
UTF-7 ist eine Kodierung des Unicode-Zeichensatzes, die in RFC 2152 definiert wird. UTF-7 erlaubt die Verwendung von Unicode in nicht 8-bit-festen Umgebungen.
Viele Protokolle im Internet (etwa SMTP für E-Mail und NNTP für News) setzen die Verwendung von ASCII voraus. Diese Zeichenkodierung erlaubt nur 128 verschiedene Zeichen, die in 7 Bit gespeichert werden.
Die Unicode-Zeichensatzkodierungen UTF-16 und UTF-32 (UCS-4) hingegen verwenden 16 oder 32 Bit, um ein Zeichen zu kodieren. UTF-8 verwendet alle acht Bit eines Zeichens. Eine Übermittlung von Unicode-Zeichen per E-Mail oder im Usenet erfordert aber eine Umwandlung in eine 7-bit-Kodierung.
Es existieren verschiedene Kodierungsverfahren (Siehe: MIME), so z. B. Base64 und Quoted-printable, die beliebige 8-Bit-Binärdaten in 7-bit-ASCII-Text umwandeln. Abhängig vom Kodierungsverfahren und von den zu kodierenden Daten bläht sich die Datenmenge durch die Kodierung auf. UTF-7 wurde entworfen, um diesen Kodierungsoverhead bei der Verwendung von Texten, die nur wenige Unicode-Zeichen enthalten, möglichst gering zu halten, und gleichzeitig Textpassagen, die in 7-bit-ASCII darstellbar sind, lesbar zu lassen.
Bei UTF-7 werden die Zeichen A-Za-z0-9'(),-./:? so übermittelt, wie sie sind. Die ASCII-Zeichen !"#$%&*;<=>@[]^_`{|} können direkt übertragen werden, sollten aber ebenfalls kodiert werden, da sie eventuell nicht durch alle e-Mail-Gateways korrekt übertragen werden.
Alle anderen Zeichen werden speziell kodiert. Hierfür wird eine Folge von zu kodierenden Zeichen (Diese Zeichenfolge kann auch aus nur einem Zeichen bestehen) als Strom von 2-Byte-Zeichen (UTF-16, evtl. mit surrogates) nach einem modifizierten Base64-Verfahren (ohne abschließendes '=') in einen Strom von ASCII-Zeichen umgewandelt. Der Start einer solchen kodierten Zeichensequenz wird durch ein Pluszeichen ("+") angezeigt, das Ende durch ein Minuszeichen ("-") oder durch das erste ASCII-Zeichen, das nicht als Ergebnis der Base64-Kodierung auftreten kann. Überflüssige Bits bei dieser Kodierung sind auf 0 zu setzen.
Bei englischem Text ist diese Kodierung von Menschen ohne weiteres zu lesen, da kodierte Sonderzeichen nur sehr selten auftreten. Die Umlaute und Sonderzeichen anderer westeuropäischer Sprachen müssen jedoch kodiert werden, was den Text bereits merklich entstellt. Texte in Sprachen, die nicht das lateinische Alphabet verwenden, sind vom Menschen nicht mehr ohne Weiteres lesbar.
UTF-7 hat sich trotz seiner höheren Kodierungseffizienz jedoch nicht durchsetzen können, da andere Verfahren wie Quoted Printable und Base64 von nahezu jedem E-Mail- und News-Programm verstanden werden und der größere Kodierungsüberhang in der Praxis keine Rolle spielt.
Beispiele
- "Hallo, Welt!" ist kodiert "Hallo, Welt!"
- "1 + 1 = 2" ist kodiert "1 +- 1 = 2"
- "£1" ist kodiert "+AKM-1". Warum? £ ist U+00A3, in Bits: 0000 0000 1010 0011. Anders gruppiert: 000000 001010 0011xx. Umgesetzt in Base64 ergibt das: AKM, weil die xx als 00 kodiert werden müssen.
Siehe auch: UTF-8, UTF-16, UTF-32, Unicode



