Seite 1 von 1
listctrl macht kein utf-8
Verfasst: Sonntag 5. November 2006, 19:18
von rkruggel
Hallo,
muss ich dem listctrl einen besonderen parameter mitgeben damit er utf-8 akzeptiert und nicht mit einem Fahler aussteigt.
-->
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 1: ordinal not in range(128)
--<
Ich benutze hier Linux, Debian
Re: listctrl macht kein utf-8
Verfasst: Sonntag 5. November 2006, 19:48
von gerold
rkruggel hat geschrieben:-->
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 1: ordinal not in range(128)
--<
Hi rkruggel!
Vielleicht bringt dich dieser Thread weiter:
http://www.python-forum.de/post-47451.html#47451
mfg
Gerold

Verfasst: Sonntag 5. November 2006, 20:48
von rkruggel
leider nein.
wx.SetDefaultPyEncoding("utf-8")
produziert den Fehler
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 102-104: invalid data
Verfasst: Montag 6. November 2006, 06:45
von gerold
Hi rkruggel!
Code: Alles auswählen
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 1: ordinal not in range(128)
Code: Alles auswählen
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 102-104: invalid data
Ich schließe jetzt einfach mal daraus, dass du keinen UTF8-String übergibst, sondern irgendetwas in die Richtung
iso-8859-1 oder
iso-8859-15.
Das wäre auch das (deutschsprachige) Standard-Encoding von Debian.
mfg
Gerold

Verfasst: Montag 6. November 2006, 10:05
von rkruggel
Die Daten kommen aus einer MySQL-DB. Die Tabellen/db stehen auf utf8-bin. Ein einfacher print zeigt mir für 'Lüdenscheid' 'L\xfcdenscheid'.
Verfasst: Montag 6. November 2006, 10:20
von sape
Eine blöde frage: Hast du die unicode Version von wxPython installiert? Mit unicode und wxPython hatte ich bisher keinerlei Probleme. Obs auch für Linux so eine Version gibt weiß ich nicht. Hab die Version für Windows.
lg
Verfasst: Montag 6. November 2006, 11:46
von gerold
rkruggel hat geschrieben:Die Daten kommen aus einer MySQL-DB. Die Tabellen/db stehen auf utf8-bin. Ein einfacher print zeigt mir für 'Lüdenscheid' 'L\xfcdenscheid'.
Hi rkruggel!
Das was du da zurück bekommst ist nicht "utf-8".
Code: Alles auswählen
>>> print repr(u"ü".encode("utf-8"))
'\xc3\xbc'
>>> print repr(u"ü".encode("iso-8859-15"))
'\xfc'
>>>
mfg
Gerold

Verfasst: Montag 6. November 2006, 13:32
von rkruggel
Du hast recht.
Ich habe mich von der Einstellung in der db etwas in die irre führen lassen.
Es ist wirklich kein utf-8. Es ist iso-8859-1. Aber jetzt ist das Problem mit dem ListCtrl für mich mich unverständlicher.
Dein Beispiel liefert bei mir die gleichen Ergebnisse. Ich habe die komplette DB umgestellt nach iso-8859-1. Da Problem bleibt leider.
Verfasst: Montag 6. November 2006, 14:34
von gerold
rkruggel hat geschrieben:Ich habe die komplette DB umgestellt nach iso-8859-1. Da Problem bleibt leider.
Hi rkruggel!
Ich habe keine Erfahrung mit MySQL und Python, aber was ich soeben gelesen habe, deutet darauf hin, dass es bei "mysql-Python 1.2.1_p2" Probleme mit Umlauten gibt.
-
http://sourceforge.net/project/showfile ... p_id=22307
-
http://sourceforge.net/forum/forum.php? ... m_id=70461
-
http://sourceforge.net/forum/forum.php? ... m_id=70461
Suche hier drinnen
http://mysql-python.svn.sourceforge.net ... iew=markup doch mal nach den Wörtern "use_unicode" und "charset".
Ob das nachträgliche Ändern des Standardencodings von MySQL auch das tatsächliche Encoding der enthaltenen Daten ändert? -- Eher nicht!
Ich persönlich würde beim Verbinden das Flag "use_unicode" verwenden und beim Füllen der Liste, die Strings in das Encoding umwandeln, das auch vom Python-Modul verwendet wird und auch per ``wx.SetDefaultPyEncoding()`` eingestellt wurde.
Ungetesteter Pseudocode:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import wx
import MySQLdb
wx.SetDefaultPyEncoding("iso-8859-1")
conn = MySQLdb.connect(passwd = "pass", db = "dbname", use_unicode = True)
...
unicodestringvonderdatenbank = u"öäüß"
iso88591string = unicodestringvonderdatenbank.encode("iso-8859-1")
mfg
Gerold

Verfasst: Montag 6. November 2006, 14:40
von gerold
Verfasst: Montag 6. November 2006, 22:50
von rkruggel
Viel Stoff zu lesen.
Ich weis jetzt zumindestens wo ich was suchen muss. Das hilf schon mal weiter. Morgen mache ich mich da ran.
Ich danke dir für deine Hilfe.