[Python-de] (Unicode)Wenn ich das richtig sehe...
Diez B. Roggisch
deets at web.de
Die Mai 25 23:53:54 CEST 2004
> > Ah sooooo. Du willst Unicode-Strings parsen, als ob sie XML
> > wären. Auf die Idee muss man erstmal kommen...
>
> ...Hhhmmm?
>
> Wieso "als ob" ?
Ich denke mal martin will darauf hinaus das
- unicode eine Definition von Zeichensaetzen mit meistens byte pro zeichen
ist.
- ein xml-parser keinen unicode, sondern einen bytestring gemaess einer im
header spezifizierten codierung ist.
Im Klartext heisst das: Wenn du den Text "üä" in unicode hast, sind das 4 byte
- welche genau koennte man jetzt nachlesen. Du kannst die jetzt encodieren,
und zwar wenigstens nach latin1 - da sind die Zeichen mit den wohlbekannten
bytewerten \xfc\xe4 codiert - oder utf8, da ist es dann \xc3\xbc\xc3\xa4.
Oder so: üä - das kennt man von Seiten in denen utf8 drin ist und latin1
drauf steht.....
Merke: utf8 ist _nicht_ unicode, sondern eine Codierung, die viele Zeichen aus
ascii direkt darstellt, und andere durch escapes wie oben - \xc3 ist ein
escape Zeichen, und \xbc dann eben der code fuer ue.
Deshalb macht dein letztes Beispiel keinen Sinn, und darauf wollte Martin
denke ich mal hinaus...
Es gibt wohl auch 2byte-codierungen, die denke ich mal mehr oder minder
dasselbe byte-weise sind wie unicode - UTF-16 zB. UTF-32 hat dann immer 4
byte pro zeichen und garantiert das ein Zeichen somit immer gleich lang
repraesentiert wird - etwas was in UTF-8 wie oben zu sehen ist nicht
garantiert.
Guter Link dazu:
http://www.unicode.org/standard/principles.html
Lichtet sich das Dunkel?
Diez