今天碰到一个python的unicode问题,一直以来遵循读进来就转成unicode,写出去用utf-8编码,内部变量赋值都是unicode,基本不存在编码的问题。
今天用wx.DirDialog控件,取文件目录,结果碰到中文目录就有问题,结果发现返回的是unicode字符串,但内部编码却不是,是str的编码,很奇怪,查了一下,也没有其他人碰到类似的问题,用了一个hacker的方法
(最终发现是我的vim的问题,在终端下面程序没有问题,为方便在vim中调试,代码写成这样)
- def OnPickDir(self, evt):
-
'''
-
选择文件目录添加影片
-
'''
-
dlg = wx.DirDialog(self, u"请选择影片所在目录",
-
style=wx.DD_DEFAULT_STYLE
-
| wx.DD_DIR_MUST_EXIST
-
)
-
if dlg.ShowModal() == wx.ID_OK:
-
ml = movielist.Mlist(u'templist.xml')
-
if sys.getfilesystemencoding() != u'UTF-8':
-
#wxpython默认在vim下面无法正常得到有效unicode编码,
-
#为方便调试,需要进行转换
-
tmppath=repr(dlg.GetPath())[1:]
-
exec 'tmppath='+ tmppath
-
path=tmppath.decode('utf-8')
-
else:
-
path=dlg.GetPath()
-
-
ml.makebaselist(path)
-
ml.savefile(u'templist.xml')
-
self.gridnew.GetTable().ReloadData(u'templist.xml')
-
self.gridnew.AutoSizeColumns()
-
dlg.Destroy()
阅读(1506) | 评论(0) | 转发(0) |