Die UU-Kodierung, meist einfach als UUencode angesprochen, ist mit einer der ältesten Kodierungsalgorithmen im EDV-Bereich um 8-Bit Daten über 7-Bit-Systeme zu übertragen. Allerdings gibt es keinen Standard in Form eines RFC. Außerdem gibt es mehrere Versionen von uuencode die sich nicht miteinander vertragen. In der ersten Version enthielt der kodierte Text noch Leerzeichen, was aber bei einigen Mailgateways zu Problemen führt, da diese Leerzeichen entfernen oder mehrere Leerzeichen zu einem Einzigen zusammenfassen. In der neueren Version werden daher alle Leerzeichen durch ASCII 96 (`) ersetzt. Ansonsten ist der Algorithmus so eingestellt, daß nur druckbare Zeichen aus dem ASCII-Bereich 33-96 (! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` und 0-9, A-Z, a-z) im kodierten Text auftauchen.
Obwohl immer noch häufig verwendet, insbesondere im Usenet[1], gibt es eine Reihe von Nachteilen die die Verwednung der UU-Kodierung einschränken:
Um die genannten Nachteile zu beheben wurde die yEnc-Kodierung als Nachfolger vorgeschlagen.
Jede UU kodierte Datei besteht aus den drei Teilen:
begin, einer dreistelligen Oktalzahl, die die Zugriffsrechte unter UNIX beschreibt und dem Dateinamen des Originals.
Quelle | Binärdarsetllung | uuencode | |
---|---|---|---|
a | 01100001 | ||
b | 01100010 | ||
c | 01100011 | ||
24-Bit | 011000010110001001100011 | ||
6-Bit | 011000 | 24 + 32 = 56 | 8 |
010110 | 22 + 32 = 54 | 6 | |
001001 | 9 + 32 = 41 | ) | |
100011 | 35 + 32 = 67 | C | |
d | 01100100 | ||
e | 01100101 | ||
__ | |||
18-Bit | 011001000110010100 | ||
6-Bit | 011001 | 25 + 32 = 57 | 9 |
000110 | 6 + 32 = 38 | & | |
010100 | 20 + 32 = 52 | 4 | |
Längenbyte | abcde = 5 Eingangsbytes | 5 + 32 = 37 | % |
%86)C9&4 |
Für eine korrekte Ausgabe müssen noch Kopf- und Abschlusszeile den uu-kodierten Text umschließen:
begin 644 uuencoded.txt %86)C9&4 ` end
Das Längenbyte kodiert die Anzahl Bytes des Ausgangstextes pro Zeile kodierten Textes. Da für die Angabe der Zeilenlänge nur ein Byte zur Verfügung steht und gleichzeitig der höchste ASCII-Wert 96 ist, ergibt sich die maximale, theoretische Zeilenlänge zu 96 − 32 = 64 Zeichen des Ausgangstextes je kodierter Zeile, entsprechend 85,3 Zeichen/kodierter Zeile. Da aber immer 3 Bytes zusammengefasst und in 6-Bit-Gruppen aufgeteilt werden entspricht die reale maximale Zeilenlänge nur 63 Zeichen, d. h. 63 × 8 ÷ 6 = 84 Zeichen im kodierten Text.
Theoretisch könnte jede Zeile des kodierten Textes eine andere Länge aufweisen. In der Praxis wird man dies jedoch nicht finden, sondern alle Zeilen, bis auf die Letzte, werden dieselbe Länge, typischerweise von 61 Zeichen je Zeile kodierten Textes haben. Ein Zeichen für die Länge und 60 Zeichen für den kodierten Inhalt, entsprechend jeweils 45 Zeichen des nicht-kodierten Originals.
#:~> uuencode <<< 'Maria Juana kommt nachts!' Ausgabe.uu begin 644 Ausgabe.uu :36%R:6$@2G5A;F$@:V]M;70@;F%C:'1S(0H` ` end #:~>
#!/usr/bin/env python3.2 # -*- coding: utf-8 -*- # import codecs def UU (Text): return codecs.encode(bytes(Text,'utf8'),'uu_codec').decode('utf8')
Diese Seite wurde vom Besucher am 05.10.2024
um 04:13:14
Uhr von einem Rechner mit der TCP/IP-Adresse 44.222.134.250
mit der Browserkennung CCBot/2.0 (https://commoncrawl.org/faq/)
aus der Domäne (none)
kommend aufgerufen. Als zuletzt besuchte Webseite wurde (none)
übermittelt.
Stand vom 21.04.2011 | GnuPG (PGP) ID: 0xA4A5103F Fingerabdruck: 0E01 902F 3EC7 B119 9492 D196 BEB5 4D5D A4A5 103F | Datenschutzhinweis | © seit 2001, Prüfziffernberechnung.DE |