[Python-de] korrekte Darstellung der Umlaute

Bernd Nawothnig Bernd.Nawothnig at t-online.de
Fr Apr 6 07:09:00 CEST 2012


On 2012-04-05, Michael Ströder wrote:
>> Der Unterschied liegt in der Semantik. Bytes sind in Python 3 keine
>> Strings mehr, das ist ein eigener Datentyp, den man nicht einfach mit
>> Strings vermanschen kann. Und dieser Unterschied ist gerade bei einer
>> Hochsprache wichtig.

> Du interpretierst meines Erachtes zu viel Semantik in den Begriff
> "String" hinein und das geht an den eigentlichen Problemen vorbei.

Strings sind in einer Hochsprache (und da zähle ich C nicht dazu)
eigene Datentypen, die aus bestimmten Zeichen zusammengesetzt sind und
auf denen Operationen wie z.B. Konkatenation, Vergleich, lower, upper,
Ermitteln der Länge usw. sinnvoll definiert sind.

Und rohe Bytesequenzen sind nun mal nicht zwingend Strings.

>> Python 2 verhält sich da eher wie C

> Nein, wenn man Unicode verwendet.

Deswegen rate ich ja auch dazu, ausschließlich Unicode zu verwenden.
Und genau deswegen gibt es in Python 3 auch nur noch Unicodestrings.
Java ist in der Hinsicht Python um 20 Jahre voraus.

Klar braucht man auch den Datentyp Bytes, um Binärdaten verarbeiten zu
können. Aber der hat nichts mit Strings zu tun.

>>> Es gibt auch eine Welt außerhalb Deiner Python-Anwendung - sogar
>>> ziemlich viel davon. ;-) Und es gibt auch verschiedenste immer noch im
>>> Einsatz befindliche Encodings (siehe RFC 1345).
>> 
>> Was ein ziemliches Übel ist und eine der Ursachen für die Schaffung
>> von Unicode war.
>
> Der Unicode-Standard ist erst mal nur die abstrakte Zuordnung von benannten
> Character Entities zu einer Ordnungszahl, welche man nur mithilfe eines
> Byte-Encodings irgendwo speichern oder hinschicken kann. Oder wie schickst Du
> aus Python 3 einen "String" an eine Java-Applikation? Beide benutzen ja von
> sich aus intern Unicode-Strings. ;-}

Ja, aber da sind die Möglichkeiten ja nun wirklich sehr überschaubar.
Und die entscheidende Kodierung der Zeichen ist bei allen gleich, wenn
man mal von den Kompositionsmöglichkeiten absieht (precomposed vs.
decomposed).




Bernd

-- 
"Die Antisemiten vergeben es den Juden nicht, dass die Juden Geist
haben - und Geld." [Friedrich Nietzsche]


Mehr Informationen über die Mailingliste python-de