utf-8-codierte Strings

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Ich habe einen utf-8-codierten String text und eine Position in diesem String. In diesem String soll zum vorherigen Zeichen zurueckgesprungen werden. Den Code dazu verstehe ich nicht ganz:

Code: Alles auswählen

position-=1
while ord(text[position])&0xc0 == 0x80:
    position -= 1;
Ist die while-Bedingung nicht das Gleiche wie

Code: Alles auswählen

ord(text[position] > 0x80 and ord(text[position])<0xc0
:?:

Okay, das Ganze hat damit zu tun, dass Zeichen oberhalb von 127 in mehr als ein Byte codiert sind. Aber wie kommt das 0xc0 da rein? Waere super, wenn mir jemand auf die Spruenge helfen Kann, denn von dem ganzen Encoding-Kram habe ich nicht so viel Ahnung.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Es geht darum (siehe http://en.wikipedia.org/wiki/UTF-8), dass die oberen zwei Bits bei "Folgezeichen" genau "10" sind.

Und mit x & 11000000 == 10000000 fragt man eben dies ab.
Antworten