Seite 1 von 1

Encoding: aus datenbank nach ANSI

Verfasst: Dienstag 3. Juli 2007, 19:51
von McRib
Trotz http://www.python-forum.de/topic-5095.html komme ich nicht so richtig weiter. Wenn ich die Daten aus der LDAP DB hole, wird "Wünschelrute" als "W\xc3\xbcnschelrute" dargestellt. Das Gerät für die Ausgabe will allerdings Ein-Byte-Hex-Encoding nach ANSI (http://www.fabians-webdesign.de/tutoria ... mlaute.htm) also \xd6 statt &#214.

Code: Alles auswählen

print type(field)
gibt

Code: Alles auswählen

<type 'str'>
:?

Das Beispiel aus dem o.a. Link ergibt:

Code: Alles auswählen

./encoding.py 
<type 'str'>
<type 'unicode'>
<type 'str'>
Hallo Österreich
Hallo Ã&#150;sterreich
Hallo Ã&#150;sterreich
Aaaaargh !

Verfasst: Dienstag 3. Juli 2007, 20:11
von BlackJack
Da das 'ü' offenbar in zwei Bytes kodiert ist, würde ich mal auf UTF-8 tippen. Also kann man das damit nach Unicode dekodieren. Die Unicode-Zeichenkette lässt sich dann als Latin-1 kodieren:

Code: Alles auswählen

In [34]: 'W\xc3\xbcnschelrute'.decode('utf-8').encode('latin-1')
Out[34]: 'W\xfcnschelrute'
Wo ist jetzt das Problem?

Verfasst: Dienstag 3. Juli 2007, 21:23
von McRib
Wo ist jetzt das Problem?
Es hat sich in Wohlgefallen aufgeloest. Vielen Dank. In dem xterm hier werden die Sonderzeichen mit einem nicht-druckbaren Zeichen gekennzeichnet... Aber auf dem Geraet funktioniert es. Cool... :-)