Seite 1 von 1

utf-8-codierte Strings

Verfasst: Mittwoch 1. November 2006, 16:21
von Rebecca
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.

Verfasst: Mittwoch 1. November 2006, 16:41
von birkenfeld
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.