Forums Neueste Beiträge
 

pyqt4: text ist utf-8, wird aber nicht richtig dargestellt

12/06/2013 - 15:27 von Wolfgang Meiners | Report spam
Hallo Gruppe,

also: ich habe Python 3.3.0 unter OSX 10.6.8. Ich habe PyQt aus
PyQt-mac-gpl-4.9.4.tar.gz installiert.


Im Terminal liefert
locale:
LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL="de_DE.UTF-8"

In der ./MacOSX/environment.plist ist der key LC_ALL mit dem Wert
de_DE.UTF-8 eingetragen. Ich lese Werte aus einer Datei, für die
file -I
text/plain; charset=utf-8
liefert. Trotzdem gibt pyqt in einem TreeView den folgenden String aus:
"Automatisch eingef�gter Text"

Ich möchte also einen String, von dem ich weiß, dass er
utf-8-formatierten Text enthàlt, darstellen. Aber das funktioniert nicht.
(Übrigens nur unter OSX nicht. Kopiere ich das Programm auf Ubuntu, ist
die Ausgabe korrekt)

Kennt jemand dieses Problem?
Wie mache ich es richtig?


Vielen Dank für alle Tipps
Wolfgang
 

Lesen sie die antworten

#1 Thomas Guettler
12/06/2013 - 17:04 | Warnen spam
Am 12.06.2013 15:27, schrieb Wolfgang Meiners:
Hallo Gruppe,

also: ich habe Python 3.3.0 unter OSX 10.6.8. Ich habe PyQt aus
PyQt-mac-gpl-4.9.4.tar.gz installiert.


Im Terminal liefert
locale:
LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL="de_DE.UTF-8"

In der ./MacOSX/environment.plist ist der key LC_ALL mit dem Wert
de_DE.UTF-8 eingetragen. Ich lese Werte aus einer Datei, für die
file -I
text/plain; charset=utf-8
liefert. Trotzdem gibt pyqt in einem TreeView den folgenden String aus:
"Automatisch eingef�gter Text"

Ich möchte also einen String, von dem ich weiß, dass er
utf-8-formatierten Text enthàlt, darstellen. Aber das funktioniert nicht.
(Übrigens nur unter OSX nicht. Kopiere ich das Programm auf Ubuntu, ist
die Ausgabe korrekt)

Kennt jemand dieses Problem?
Wie mache ich es richtig?



Es fehlt der Quelltext wie du die Zeichenkette einliest. Vermutlich
ist das eine Bytefolge, und nicht ein Unicode-Objekt.

versuche das:

import codecs
fd=codecs.open(myfile, 'rt', 'utf8')


oder das Wandeln der Zeichenkette:
mystr.decode('utf8') # de-kodieren: also von byte-string zu unicode objekt.



Thomas Guettler http://www.thomas-guettler.de/

Ähnliche fragen