您的位置:首页 > 编程语言 > Python开发

贴一下今天python中文乱码问题解决办法。

2013-03-12 12:21 746 查看
#!/usr/bin/env python
#coding:utf-8

import wx

class InputDialog ( wx.Dialog ):
    
    def __init__( self, parent ):
        wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"调整信息输入", pos = wx.DefaultPosition, size = wx.Size( 535,135 ), style = wx.DEFAULT_DIALOG_STYLE )
        
        self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
        self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
        
        bSizer1 = wx.BoxSizer( wx.VERTICAL )
        
        bSizer2 = wx.BoxSizer( wx.HORIZONTAL )
        
        self.m_timeRadio = wx.RadioButton( self, wx.ID_ANY, u"输入时间:", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer2.Add( self.m_timeRadio, 0, wx.ALL, 5 )
        
        self.m_datePicker = wx.DatePickerCtrl( self, wx.ID_ANY, wx.DefaultDateTime, wx.DefaultPosition, wx.DefaultSize, wx.DP_DEFAULT )
        bSizer2.Add( self.m_datePicker, 0, wx.ALL, 5 )
        
        self.hoursLabel = wx.StaticText( self, wx.ID_ANY, u"时:", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.hoursLabel.Wrap( -1 )
        bSizer2.Add( self.hoursLabel, 0, wx.ALL, 5 )
        
        self.m_hoursTextCtrl = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( 70,-1 ), 0 )
        bSizer2.Add( self.m_hoursTextCtrl, 0, wx.ALL, 5 )
        
        self.minnutesLabel = wx.StaticText( self, wx.ID_ANY, u"分:", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.minnutesLabel.Wrap( -1 )
        bSizer2.Add( self.minnutesLabel, 0, wx.ALL, 5 )
        
        self.m_minutesTextCtrl = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( 70,-1 ), 0 )
        bSizer2.Add( self.m_minutesTextCtrl, 0, wx.ALL, 5 )
        
        self.secondsLabel = wx.StaticText( self, wx.ID_ANY, u"秒:", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.secondsLabel.Wrap( -1 )
        bSizer2.Add( self.secondsLabel, 0, wx.ALL, 5 )
        
        self.m_secondsTextCtrl = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( 70,-1 ), 0 )
        bSizer2.Add( self.m_secondsTextCtrl, 0, wx.ALL, 5 )
        
        
        bSizer1.Add( bSizer2, 0, wx.EXPAND, 5 )
        
        bSizer3 = wx.BoxSizer( wx.HORIZONTAL )
        
        self.m_normalInfoRadio = wx.RadioButton( self, wx.ID_ANY, u"常用信息输入:", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer3.Add( self.m_normalInfoRadio, 0, wx.ALL, 5 )
        
        self.m_normalInfoTextCtrl = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( 300,-1 ), 0 )
        bSizer3.Add( self.m_normalInfoTextCtrl, 0, wx.ALL, 5 )
        
        
        bSizer1.Add( bSizer3, 0, wx.EXPAND, 5 )
        
        
        bSizer1.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 )
        
        bSizer4 = wx.BoxSizer( wx.HORIZONTAL )
        
        
        bSizer4.AddSpacer( ( 0, 0), 1, wx.EXPAND, 5 )
        
        self.m_btnOk = wx.Button( self, wx.ID_OK, u"确定", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer4.Add( self.m_btnOk, 0, wx.ALL, 5 )
        
        self.m_btnCancel = wx.Button( self, wx.ID_OK, u"取消", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer4.Add( self.m_btnCancel, 0, wx.ALL, 5 )
        
        
        bSizer1.Add( bSizer4, 0, wx.EXPAND, 5 )
        
        
        self.SetSizer( bSizer1 )
        self.Layout()
        
        self.Centre( wx.BOTH )
        self.Centre( wx.BOTH )
    
    def __del__( self ):
        pass
    
    
if __name__ =='__main__':
    app = wx.App()
    dlg = InputDialog(None)
    dlg.Show()
    app.MainLoop()

代码如上, 就是一个小小的简单的 对话框显示问题,里面有中文,但是显示乱码。

首先人为编码不对,在文件头什么为utf-8了:

#!/usr/bin/env python

#coding:utf-8

然后运行,还是乱码,然后以为文件不是没保存为utf-8 查看。

在项目中选中该文件,如 InputDialog.py , 右键- > 属性 ->resource -> text file encoding





然后确定是一样的,还不行,为什么呢。后来想了想,直接把代码先暂时拷贝到一个临时文件里面去,然后把InputDialog.py这个文件删除,

干脆重新建立一个新的空InputDialog.py ,先用上面的方法看了下,默认格式为GBK。额,然后我改为UTF-8 , 然后把原来的代码拷贝

进来,运行,没乱码问题了,搞定,不过还是没知道为什么这么就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: