Seite 1 von 1

TextCtrl - encoding Problem: UnicodeDecodeError Traceback

Verfasst: Donnerstag 2. Dezember 2004, 11:50
von jens
wenn ich per WriteText ein Test mit "Sonderzeichen" wie ÄÖÜäöü schreibe, bekomme ich folgenden Traceback:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 7: ordinal not in range(128)
Muß ich Texte erst encoden?

Folgende coding kommentare schon probiert:
  • # -*- coding: ISO-8859-1 -*-
    # -*- coding: utf-8 -*-
    # -*- coding: latin-1 -*-

Verfasst: Donnerstag 2. Dezember 2004, 12:03
von jens
Problem gelöst, mit:

Code: Alles auswählen

text = unicode(text, sys.getfilesystemencoding())

Verfasst: Donnerstag 2. Dezember 2004, 15:28
von jens
Jetzt hab ich allerdings doch nocht ein Problem damit :(

Und zwar, wenn Bsp. ein Button-Namen mit Umlaute ist, bekomme ich wieder ein Traceback...

Also muß ich doch an dem Coding-Kommentar was ändern???

EDIT1:
Übrigends liefert mir sys.getfilesystemencoding() "mbcs" zurück ?!?

EDIT2:
sollte ich vielleicht besser "non Unicode wxPython" installieren??? Hab nämlich z.Z. "wx-2.5.3-msw-unicode" installiert...

EDIT3:

Code: Alles auswählen

import locale
print locale.getdefaultlocale()
('de_DE', 'cp1252')

Verfasst: Donnerstag 2. Dezember 2004, 15:47
von jens
So, hab "non Unicode wxPython" also die ANSI version installiert... Und siehe da, die Fehler sind weg...

Kann mir das jetzt einer erklären??? :shock:

Verfasst: Freitag 3. Dezember 2004, 13:24
von jens
Ich hatte nun nocheinmal das Problem, mit einem wx.MessageBox("Gewählt:"...)
Es gab zwar kein Traceback, aber das "ä" wurde falsch Dargestellt...

Das lag aber daran, das die aktuelle Datei mit coding: UFT-8 abgespeichert wurde...

Richtig funktioniert es wenn ich als coding: cp1252 oder coding: ISO-8859-1 benutze...

Welches ist besser unter WinXP ?

Verfasst: Sonntag 5. Dezember 2004, 00:13
von Leonidas
Bei mir geht sowas auch:

Code: Alles auswählen

import wx
app = wx.PySimpleApp()
msg = wx.MessageBox(u"öäüÖÄÜß", u"Unsere geliebten Umlaute")
Er gibt zwar eine DeprecationWarning aus, aber angezeigt wird es.

Und wenn ich es so mache hält er die Klappe und meckert nicht:

Code: Alles auswählen

# -*- coding: latin-1 -*-
import wx

app = wx.PySimpleApp()
msg = wx.MessageBox(u"öäüÖÄÜß", u"Unsere geliebten Umlaute")
Ich würde an deiner stelle latin-1 oder eben iso-8859-1 nehmen (was ja das gleiche ist), denn die CodePages sind afaik eine Erfindung Microsofts und ISO eben ISO Standards.