[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