Das deutsche Python-Forum

10 Jahre Diskussionen rund um die Programmiersprache Python
Aktuelle Zeit: Dienstag 2. September 2014, 18:38

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: listctrl macht kein utf-8
BeitragVerfasst: Sonntag 5. November 2006, 20:18 
User

Registriert: Mittwoch 9. März 2005, 12:40
Beiträge: 21
Wohnort: Altena, Westf.
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

_________________
cu
Roland


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: listctrl macht kein utf-8
BeitragVerfasst: Sonntag 5. November 2006, 20:48 
Python-Forum Veteran
Benutzeravatar

Registriert: Samstag 28. Februar 2004, 23:04
Beiträge: 5550
Wohnort: Oberhofen im Inntal (Tirol)
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
:-)

_________________
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Sonntag 5. November 2006, 21:48 
User

Registriert: Mittwoch 9. März 2005, 12:40
Beiträge: 21
Wohnort: Altena, Westf.
leider nein.

wx.SetDefaultPyEncoding("utf-8")

produziert den Fehler

UnicodeDecodeError: 'utf8' codec can't decode bytes in position 102-104: invalid data

_________________
cu
Roland


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Montag 6. November 2006, 07:45 
Python-Forum Veteran
Benutzeravatar

Registriert: Samstag 28. Februar 2004, 23:04
Beiträge: 5550
Wohnort: Oberhofen im Inntal (Tirol)
Hi rkruggel!

[code=]UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 1: ordinal not in range(128)[/code]
[code=]UnicodeDecodeError: 'utf8' codec can't decode bytes in position 102-104: invalid data[/code]

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
:-)

_________________
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Montag 6. November 2006, 11:05 
User

Registriert: Mittwoch 9. März 2005, 12:40
Beiträge: 21
Wohnort: Altena, Westf.
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'.

_________________
cu
Roland


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Montag 6. November 2006, 11:20 
User

Registriert: Sonntag 3. September 2006, 13:52
Beiträge: 1157
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


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Montag 6. November 2006, 12:46 
Python-Forum Veteran
Benutzeravatar

Registriert: Samstag 28. Februar 2004, 23:04
Beiträge: 5550
Wohnort: Oberhofen im Inntal (Tirol)
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".

  1. >>> print repr(u"ü".encode("utf-8"))
  2. '\xc3\xbc'
  3. >>> print repr(u"ü".encode("iso-8859-15"))
  4. '\xfc'
  5. >>>
Highlighting by GeSHi

mfg
Gerold
:-)

_________________
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Montag 6. November 2006, 14:32 
User

Registriert: Mittwoch 9. März 2005, 12:40
Beiträge: 21
Wohnort: Altena, Westf.
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.

_________________
cu
Roland


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Montag 6. November 2006, 15:34 
Python-Forum Veteran
Benutzeravatar

Registriert: Samstag 28. Februar 2004, 23:04
Beiträge: 5550
Wohnort: Oberhofen im Inntal (Tirol)
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:
  1. #!/usr/bin/env python
  2. # -*- coding: iso-8859-1 -*-
  3.  
  4. import wx
  5. import MySQLdb
  6.  
  7. wx.SetDefaultPyEncoding("iso-8859-1")
  8.  
  9.  
  10. conn = MySQLdb.connect(passwd = "pass", db = "dbname", use_unicode = True)
  11.  
  12. ...
  13.  
  14. unicodestringvonderdatenbank = u"öäüß"
  15.  
  16. iso88591string = unicodestringvonderdatenbank.encode("iso-8859-1")
Highlighting by GeSHi

mfg
Gerold
:-)

_________________
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Montag 6. November 2006, 15:40 
Python-Forum Veteran
Benutzeravatar

Registriert: Samstag 28. Februar 2004, 23:04
Beiträge: 5550
Wohnort: Oberhofen im Inntal (Tirol)
PS:
- Lesestoff: http://www.python-forum.de/topic-5095.html
- Auch wenn es sich hier um pySQLite dreht...: http://gelb.bcom.at/trac/misc/wiki/Tuto ... iteUmlaute

_________________
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Montag 6. November 2006, 23:50 
User

Registriert: Mittwoch 9. März 2005, 12:40
Beiträge: 21
Wohnort: Altena, Westf.
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.

_________________
cu
Roland


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Deutsche Übersetzung durch phpBB.de