Codierungsproblem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Hallo,

ich lasse in einem TextControl u.a. auch griechische Buchstaben ausgeben.

Code:

Code: Alles auswählen

        self.Ausgabetext = wx.TextCtrl(self, 1, u"", style = wx.TE_READONLY |wx.TE_MULTILINE)  #|wx.BORDER_RAISED) 
        ausgabebox.Add(self.Ausgabetext, proportion = 1, flag = wx.ALL | wx.EXPAND, border = 2) 
...
...

                self.Ausgabe.Ausgabetext.WriteText(u'cot \u03d1=%s\n' % format(self.cott,'%0.3f'))#theta
                self.Ausgabe.Ausgabetext.WriteText(u'\u03d1=%s °\n' % format(self.thetaw,'%0.1f'))
Wenn ich dann mit der Maus kopiere und in Word einfüge, erscheint
cot ϑ=3,000
ϑ=18,4 °
so soll es sein.

wenn ich das aber in die Zwischenablage über

Code: Alles auswählen

    self.text=self.Ausgabe.Ausgabetext.GetValue()
    win32clipboard.OpenClipboard() 
    win32clipboard.EmptyClipboard() 
    win32clipboard.SetClipboardText(self.text) 
    win32clipboard.CloseClipboard()
in Word einfüge, erscheint:
cot ?=3,000
?=18,4 °

wie kann ich das verhindern??
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Du musst dem Clipboard sagen, dass es Unicode empfängt, schau mal, ob dich das weiterbringt: http://docs.activestate.com/activepytho ... _meth.html
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

vielen Dank, das war genau auf den Punkt,

folgende Lösung bringt das gewünschte ergebnis:


Code: Alles auswählen

    t = win32clipboard.CF_UNICODETEXT
    self.text=self.Ausgabe.Ausgabetext.GetValue()
    win32clipboard.OpenClipboard() 
    win32clipboard.EmptyClipboard() 
    win32clipboard.SetClipboardData(t, self.text)
    win32clipboard.CloseClipboard()
Antworten