Domanda

Se entro personaggi baltiche in textctrl e fare clic sul pulsante test1 Ho un errore

"InicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: 
                     ordinal not in range(128)"

Pulsante test2 funziona bene.

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import wx

class MyFrame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, (-1, -1), wx.Size(450, 300))

        self.panel = wx.Panel(self)

        self.input_area = wx.TextCtrl(self.panel, -1, '',(5,5),(200,200), style=wx.TE_MULTILINE)
        self.output_list = wx.ListCtrl(self.panel, -1, (210,5), (200,200), style=wx.LC_REPORT)
        self.output_list.InsertColumn(0, 'column')
        self.output_list.SetColumnWidth(0, 100)


        self.btn1 = wx.Button(self.panel, -1, 'test1', (5,220))
        self.btn1.Bind(wx.EVT_BUTTON, self.OnTest1)

        self.btn2 = wx.Button(self.panel, -1, 'test2', (100,220))
        self.btn2.Bind(wx.EVT_BUTTON, self.OnTest2)

        self.Centre()

    def OnTest1(self, event):
        self.output_list.InsertStringItem(0,str(self.input_area.GetValue()).decode('utf-8'))

    def OnTest2(self, event):
        self.output_list.InsertStringItem(0,"ąčęėįš".decode('utf-8'))

class MyApp(wx.App):
     def OnInit(self):
         frame = MyFrame(None, -1, 'encoding')
         frame.Show(True)
         return True

app = MyApp(0)
app.MainLoop()

Aggiornamento 1

Ho provato questo codice su due computer x64 di Windows 7 Ultimate.

Entrambi hanno python 2.7 e wxPython2.8 Win64 unicode per Python 2.7

In entrambe le macchine io ho lo stesso errore.

È stato utile?

Soluzione

Sostituire def OnTest1 (self, evento): self.output_list.InsertStringItem (0, str (self.input_area.GetValue ()). decode ( 'utf-8'))

con

def OnTest1 (self, evento):

    self.output_list.InsertStringItem(0,self.input_area.GetValue())

Altri suggerimenti

non è in grado di riprodurre ... Se provo con lettere accentate svedese "AAO" sembra funzionare, anche quando si utilizza "aceeiš" problema locale?

Si sta utilizzando la build unicode di wxPython? Lei non ha menzionato la propria piattaforma e l'altro sistema i dettagli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top