문제

If I enter Baltic characters in textctrl and click button test1 I have an error

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

Button test2 works fine.

#!/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()

Update 1

I have tried this code on two Windows 7 Ultimate x64 computers.

Both have python 2.7 and wxPython2.8 win64 unicode for python 2.7

In both machines I have the same error.

도움이 되었습니까?

해결책

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

with

def OnTest1(self, event):

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

다른 팁

can't reproduce... If I try with swedish caracters "åäö" it seems to work, also when using "ąčęėįš" locale problem?

Are you using the unicode build of wxPython? You didn't mention your platform and other system details.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top