[python-users] "bytes" in Python 3000

Christopher Arndt chris.arndt at web.de
Fr Mär 6 16:11:46 CET 2009


Patrick Holz schrieb:
> Hallo Liste,
> 
> ich wurschtele mich gerade durch die Release Notes von Python 3000 und
> frage mich beim Thema Unicode, ob es für die Benutzung des Datentyps
> "bytes" abseits von Speicherplatzbedarf etc. eine sinnvolle Begründung
> geben kann. Ich hatte es bislang so verstanden, dass ASCII-Strings
> (oder eben Bytestrings) bisher Standard waren und Unicode eine Option,
> nun ist es eben andersherum. Aber in Foren wird immer wieder betont,
> dass die Unterscheidung nun viel sinnvoller ist als früher.
> 
> Anders gefragt: In welchen Situationen sollte man den Datentyp
> verwenden? Oder ist der doch nur einfach "legacy"?

Früher (Python < 3.0) wurden Strings gleichzeitig als Datentyp für
generische Datenströme "missbraucht". Dies führte bei vielen
Programmierern zu der fälschlichen Annahme: 1 Byte <=> 1 Zeichen.

Außerdem war nie klar, in welcher Kodieerung denn nun die Zeichen im
String vorlagen.

Dewegen gibt es jetzt zwei Datentypen. Eine für Strings in
Unicode-Kodierung und einen für generische Datenströme *ohne* Kodierung,
d.h. die Kodierung ist nicht definiert. In anderen Worten: solange die
innere Struktur der Daten auf die eine Variable vom Type "bytes"
verweist, nicht bekannt ist, sind diese nur eine willkürliche Abfolge
von Bytes. Will man Daten vom Typ "bytes" als String interpretieren,
muss man sie unter Angabe einer Kodierung in den Stringtyp umwandeln
(dekodieren).

Anwendungsfälle z.B.:

- Bilddaten
- jegliche binär kodierte Dokumentformate, z.B. Word-Dokumente,
ZIP-Archive usw.
- IP-Pakete
- Audiosampledaten
- usw.


Chris




Mehr Informationen über die Mailingliste python-users